Skip to content
Snippets Groups Projects
Commit a53ccf39 authored by William Roberts's avatar William Roberts
Browse files

Fix check_seapp segfault and undefined linking err

When LINK_SEPOL_STATIC was not defined, symbol
log_warning was trying to be resolved by the linker.
That symbol was not defined as it should have been
log_warn and not log_warning.

When a key would be validated in key_map_validate(), an
unchecked key, like user, could cuase a segfault when
the se_key was getting free'd no matter what at the end
of the function, even if no se_key was alloc'd.

Change-Id: If334ba7350e6d2ad1fa9bed142bb2fabe7caa057
parent 10f9a372
No related branches found
No related tags found
No related merge requests found
...@@ -277,15 +277,18 @@ static int key_map_validate(key_map *m, int lineno) { ...@@ -277,15 +277,18 @@ static int key_map_validate(key_map *m, int lineno) {
log_error("Could not check selinux boolean, error: %s\n", log_error("Could not check selinux boolean, error: %s\n",
strerror(errno)); strerror(errno));
rc = 0; rc = 0;
goto bool_err; sepol_bool_key_free(se_key);
goto out;
} }
if(!resp) { if(!resp) {
log_error("Could not find selinux boolean \"%s\" on line: %d in file: %s\n", log_error("Could not find selinux boolean \"%s\" on line: %d in file: %s\n",
value, lineno, out_file_name); value, lineno, out_file_name);
rc = 0; rc = 0;
goto bool_err; sepol_bool_key_free(se_key);
goto out;
} }
sepol_bool_key_free(se_key);
} }
else if (!strcasecmp(key, "type") || !strcasecmp(key, "domain")) { else if (!strcasecmp(key, "type") || !strcasecmp(key, "domain")) {
...@@ -296,7 +299,6 @@ static int key_map_validate(key_map *m, int lineno) { ...@@ -296,7 +299,6 @@ static int key_map_validate(key_map *m, int lineno) {
} }
goto out; goto out;
} }
else if (!strcasecmp(key, "level")) { else if (!strcasecmp(key, "level")) {
ret = sepol_mls_check(pol.handle, pol.db, value); ret = sepol_mls_check(pol.handle, pol.db, value);
...@@ -308,9 +310,6 @@ static int key_map_validate(key_map *m, int lineno) { ...@@ -308,9 +310,6 @@ static int key_map_validate(key_map *m, int lineno) {
} }
} }
bool_err:
sepol_bool_key_free(se_key);
out: out:
log_info("Key map validate returning: %d\n", rc); log_info("Key map validate returning: %d\n", rc);
return rc; return rc;
...@@ -619,7 +618,7 @@ static void init() { ...@@ -619,7 +618,7 @@ static void init() {
log_info("Output file set to: %s\n", (out_file_name == NULL) ? "stdout" : out_file_name); log_info("Output file set to: %s\n", (out_file_name == NULL) ? "stdout" : out_file_name);
#if !defined(LINK_SEPOL_STATIC) #if !defined(LINK_SEPOL_STATIC)
log_warning("LINK_SEPOL_STATIC is not defined\n""Not checking types!"); log_warn("LINK_SEPOL_STATIC is not defined\n""Not checking types!");
#endif #endif
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment