Browse Source

Merge branch 'master' of git://git.infradead.org/users/pcmoore/selinux into next

James Morris 11 years ago
parent
commit
923b49ff69
1 changed files with 13 additions and 1 deletions
  1. 13 1
      security/selinux/ss/policydb.c

+ 13 - 1
security/selinux/ss/policydb.c

@@ -1995,7 +1995,19 @@ static int filename_trans_read(struct policydb *p, void *fp)
 		if (rc)
 			goto out;
 
-		hashtab_insert(p->filename_trans, ft, otype);
+		rc = hashtab_insert(p->filename_trans, ft, otype);
+		if (rc) {
+			/*
+			 * Do not return -EEXIST to the caller, or the system
+			 * will not boot.
+			 */
+			if (rc != -EEXIST)
+				goto out;
+			/* But free memory to avoid memory leak. */
+			kfree(ft);
+			kfree(name);
+			kfree(otype);
+		}
 	}
 	hash_eval(p->filename_trans, "filenametr");
 	return 0;