fixes to commit 847d27b8385ce77ac71df8aa58a2d298b33d1ea4

- implicit declaration of semanage_module_enabled()
- added nicer error messages when disabling or enabling modules already disabled or enabled
- fix comment

Signed-off-by: Joshua Brindle <method@manicmethod.com>
This commit is contained in:
Joshua Brindle 2010-03-06 17:39:47 -05:00
parent 654dcb897e
commit c1323f22c7
2 changed files with 29 additions and 17 deletions

View file

@ -1304,8 +1304,14 @@ static int semanage_direct_enable(semanage_handle_t * sh, char *module_name)
goto cleanup; goto cleanup;
} }
base++; base++;
if (memcmp(module_name, base, name_len) == 0 && if (memcmp(module_name, base, name_len) == 0) {
strcmp(base + name_len + 3, DISABLESTR) == 0) {
if(strcmp(base + name_len + 3, DISABLESTR) != 0) {
ERR(sh, "Module %s is already enabled.", module_name);
retval = -2;
goto cleanup;
}
int len = strlen(module_filenames[i]) - strlen(DISABLESTR); int len = strlen(module_filenames[i]) - strlen(DISABLESTR);
char *enabled_name = calloc(1, len+1); char *enabled_name = calloc(1, len+1);
if (!enabled_name) { if (!enabled_name) {
@ -1336,7 +1342,7 @@ static int semanage_direct_enable(semanage_handle_t * sh, char *module_name)
return retval; return retval;
} }
/* Enables a module from the sandbox. Returns 0 on success, -1 if out /* Disables a module from the sandbox. Returns 0 on success, -1 if out
* of memory, -2 if module not found or could not be enabled. */ * of memory, -2 if module not found or could not be enabled. */
static int semanage_direct_disable(semanage_handle_t * sh, char *module_name) static int semanage_direct_disable(semanage_handle_t * sh, char *module_name)
{ {
@ -1356,8 +1362,12 @@ static int semanage_direct_disable(semanage_handle_t * sh, char *module_name)
goto cleanup; goto cleanup;
} }
base++; base++;
if (memcmp(module_name, base, name_len) == 0 && if (memcmp(module_name, base, name_len) == 0) {
strcmp(base + name_len, ".pp") == 0) { if (strcmp(base + name_len + 3, DISABLESTR) == 0) {
ERR(sh, "Module %s is already disabled.", module_name);
retval = -2;
goto cleanup;
} else if (strcmp(base + name_len, ".pp") == 0) {
char disabled_name[PATH_MAX]; char disabled_name[PATH_MAX];
if (snprintf(disabled_name, PATH_MAX, "%s%s", if (snprintf(disabled_name, PATH_MAX, "%s%s",
module_filenames[i], DISABLESTR) == PATH_MAX) { module_filenames[i], DISABLESTR) == PATH_MAX) {
@ -1375,6 +1385,7 @@ static int semanage_direct_disable(semanage_handle_t * sh, char *module_name)
goto cleanup; goto cleanup;
} }
} }
}
ERR(sh, "Module %s was not found.", module_name); ERR(sh, "Module %s was not found.", module_name);
retval = -2; /* module not found */ retval = -2; /* module not found */
cleanup: cleanup:

View file

@ -84,6 +84,7 @@ int semanage_make_sandbox(semanage_handle_t * sh);
int semanage_get_modules_names(semanage_handle_t * sh, int semanage_get_modules_names(semanage_handle_t * sh,
char ***filenames, int *len); char ***filenames, int *len);
int semanage_module_enabled(const char *file);
/* lock file routines */ /* lock file routines */
int semanage_get_trans_lock(semanage_handle_t * sh); int semanage_get_trans_lock(semanage_handle_t * sh);
int semanage_get_active_lock(semanage_handle_t * sh); int semanage_get_active_lock(semanage_handle_t * sh);