diff -up setools-3.3.7/secmds/seinfo.c.exitstatus setools-3.3.7/secmds/seinfo.c --- setools-3.3.7/secmds/seinfo.c.exitstatus 2010-05-03 12:39:02.000000000 -0400 +++ setools-3.3.7/secmds/seinfo.c 2010-11-05 09:54:39.000000000 -0400 @@ -827,7 +827,7 @@ static int print_sens(FILE * fp, const c */ static int print_cats(FILE * fp, const char *name, int expand, const apol_policy_t * policydb) { - int retval = 0; + int retval = -1; apol_cat_query_t *query = NULL; apol_vector_t *v = NULL; const qpol_cat_t *cat_datum = NULL; @@ -911,9 +911,10 @@ static int print_fsuse(FILE * fp, const fprintf(fp, " %s\n", tmp); free(tmp); } - if (type && !apol_vector_get_size(v)) + if (type && !apol_vector_get_size(v)) { ERR(policydb, "No fs_use statement for filesystem of type %s.", type); - + goto cleanup; + } retval = 0; cleanup: apol_fs_use_query_destroy(&query); @@ -949,7 +950,6 @@ static int print_genfscon(FILE * fp, con ERR(policydb, "%s", strerror(ENOMEM)); goto cleanup; } - if (apol_genfscon_query_set_filesystem(policydb, query, type)) goto cleanup; if (apol_genfscon_get_by_query(policydb, query, &v)) @@ -967,8 +967,10 @@ static int print_genfscon(FILE * fp, con free(tmp); } - if (type && !apol_vector_get_size(v)) + if (type && !apol_vector_get_size(v)) { ERR(policydb, "No genfscon statement for filesystem of type %s.", type); + goto cleanup; + } retval = 0; cleanup: @@ -1646,6 +1648,7 @@ cleanup: // close and destroy iterators int main(int argc, char **argv) { + int rc = 0; int classes, types, attribs, roles, users, all, expand, stats, rt, optc, isids, bools, sens, cats, fsuse, genfs, netif, node, port, permissives, polcaps, constrain, linebreaks; apol_policy_t *policydb = NULL; @@ -1851,46 +1854,46 @@ int main(int argc, char **argv) /* display requested info */ if (stats || all) - print_stats(stdout, policydb); + rc = print_stats(stdout, policydb); if (classes || all) - print_classes(stdout, class_name, expand, policydb); + rc = print_classes(stdout, class_name, expand, policydb); if (types || all) - print_types(stdout, type_name, expand, policydb); + rc = print_types(stdout, type_name, expand, policydb); if (attribs || all) - print_attribs(stdout, attrib_name, expand, policydb); + rc = print_attribs(stdout, attrib_name, expand, policydb); if (roles || all) - print_roles(stdout, role_name, expand, policydb); + rc = print_roles(stdout, role_name, expand, policydb); if (users || all) - print_users(stdout, user_name, expand, policydb); + rc = print_users(stdout, user_name, expand, policydb); if (bools || all) - print_booleans(stdout, bool_name, expand, policydb); + rc = print_booleans(stdout, bool_name, expand, policydb); if (sens || all) - print_sens(stdout, sens_name, expand, policydb); + rc = print_sens(stdout, sens_name, expand, policydb); if (cats || all) - print_cats(stdout, cat_name, expand, policydb); + rc = print_cats(stdout, cat_name, expand, policydb); if (fsuse || all) - print_fsuse(stdout, fsuse_type, policydb); + rc = print_fsuse(stdout, fsuse_type, policydb); if (genfs || all) - print_genfscon(stdout, genfs_type, policydb); + rc = print_genfscon(stdout, genfs_type, policydb); if (netif || all) - print_netifcon(stdout, netif_name, policydb); + rc = print_netifcon(stdout, netif_name, policydb); if (node || all) - print_nodecon(stdout, node_addr, policydb); + rc = print_nodecon(stdout, node_addr, policydb); if (port || all) - print_portcon(stdout, port_num, protocol, policydb); + rc = print_portcon(stdout, port_num, protocol, policydb); if (isids || all) - print_isids(stdout, isid_name, expand, policydb); + rc = print_isids(stdout, isid_name, expand, policydb); if (permissives || all) - print_permissives(stdout, permissive_name, expand, policydb); + rc = print_permissives(stdout, permissive_name, expand, policydb); if (polcaps || all) - print_polcaps(stdout, polcap_name, expand, policydb); + rc = print_polcaps(stdout, polcap_name, expand, policydb); if (constrain || all) - print_constraints(stdout, expand, policydb, linebreaks); + rc = print_constraints(stdout, expand, policydb, linebreaks); apol_policy_destroy(&policydb); apol_policy_path_destroy(&pol_path); free(policy_file); - exit(0); + exit(rc); } /**