X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=selinux%2Fsestatus.c;h=eca557e4cae4af539191b2913352ceb3b6ef207d;hb=d4b719878f5a08986d0a3dc493aad90d4466752e;hp=cc17b175b06f30f4f5e21fe696705cd01971a5cb;hpb=705eaf8b403555741cf6313a76da8597ae54d324;p=oweals%2Fbusybox.git diff --git a/selinux/sestatus.c b/selinux/sestatus.c index cc17b175b..eca557e4c 100644 --- a/selinux/sestatus.c +++ b/selinux/sestatus.c @@ -47,46 +47,29 @@ static void display_boolean(void) static void read_config(char **pc, int npc, char **fc, int nfc) { - char buf[256]; - FILE *fp; + char *buf; + parser_t *parser; int pc_ofs = 0, fc_ofs = 0, section = -1; pc[0] = fc[0] = NULL; - fp = fopen("/etc/sestatus.conf", "rb"); - if (fp == NULL) - return; - - while (fgets(buf, sizeof(buf), fp) != NULL) { - int i, c; - - /* kills comments */ - for (i = 0; (c = buf[i]) != '\0'; i++) { - if (c == '#') { - buf[i] = '\0'; - break; - } - } - trim(buf); - - if (buf[0] == '\0') - continue; - + parser = config_open("/etc/sestatus.conf"); + while (config_read(parser, &buf, 1, 1, "# \t", PARSE_NORMAL)) { if (strcmp(buf, "[process]") == 0) { section = 1; } else if (strcmp(buf, "[files]") == 0) { section = 2; } else { if (section == 1 && pc_ofs < npc -1) { - pc[pc_ofs++] = strdup(buf); + pc[pc_ofs++] = xstrdup(buf); pc[pc_ofs] = NULL; } else if (section == 2 && fc_ofs < nfc - 1) { - fc[fc_ofs++] = strdup(buf); + fc[fc_ofs++] = xstrdup(buf); fc[fc_ofs] = NULL; } } } - fclose(fp); + config_close(parser); } static void display_verbose(void) @@ -159,7 +142,7 @@ static void display_verbose(void) } int sestatus_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -int sestatus_main(int argc, char **argv) +int sestatus_main(int argc UNUSED_PARAM, char **argv) { unsigned opts; const char *pol_path;