summaryrefslogtreecommitdiff
blob: fee0ff623e2f26591895ff7f03c92c7d1ee4b391 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
--- linux-2.6.4/security/selinux/hooks.c	2004-04-13 00:51:48.225259424 -0500
+++ linux-2.6.5-hardened/security/selinux/hooks.c	2004-04-13 00:34:15.067464600 -0500
@@ -1673,6 +1673,11 @@
 
 static int selinux_bprm_check_security (struct linux_binprm *bprm)
 {
+	int rc;
+
+	rc = secondary_ops->bprm_check_security(bprm);
+	if (rc) 
+		return rc;
 	return 0;
 }
 
@@ -2013,6 +2018,11 @@
 
 static int selinux_inode_unlink(struct inode *dir, struct dentry *dentry)
 {
+	int rc;
+	
+	rc = secondary_ops->inode_unlink(dir, dentry);
+	if (rc)
+		return rc;
 	return may_link(dir, dentry, MAY_UNLINK);
 }
 
@@ -2081,11 +2091,17 @@
 static int selinux_inode_permission(struct inode *inode, int mask,
 				    struct nameidata *nd)
 {
+	int rc;
+
 	if (!mask) {
 		/* No permission to check.  Existence test. */
 		return 0;
 	}
 
+	rc = secondary_ops->inode_permission(inode, mask, nd);
+	if (rc)
+		return rc;
+
 	return inode_has_perm(current, inode,
 			       file_mask_to_av(inode->i_mode, mask), NULL, NULL);
 }
@@ -2358,6 +2374,7 @@
 static int selinux_file_mmap(struct file *file, unsigned long prot, unsigned long flags)
 {
 	u32 av;
+	int rc;
 
 	if (file) {
 		/* read access is always possible with a mapping */
@@ -2369,6 +2386,10 @@
 
 		if (prot & PROT_EXEC)
 			av |= FILE__EXECUTE;
+	
+		rc = secondary_ops->file_mmap(file, prot, flags);
+		if (rc)
+			return rc;
 
 		return file_has_perm(current, file, av);
 	}