diff --git a/libsepol-rhat.patch b/libsepol-rhat.patch index 746dc6d..b0c6613 100644 --- a/libsepol-rhat.patch +++ b/libsepol-rhat.patch @@ -1,110 +1,24 @@ -diff --exclude-from=exclude -N -u -r nsalibsepol/src/genbools.c libsepol-1.5.2/src/genbools.c ---- nsalibsepol/src/genbools.c 2005-03-08 15:15:26.000000000 -0500 -+++ libsepol-1.5.2/src/genbools.c 2005-03-29 10:20:54.000000000 -0500 -@@ -24,11 +24,40 @@ - return dest; - } - -+static int process_boolean(char *buffer, char *name, int namesize, int *val) { -+ char name1[BUFSIZ]; -+ char *ptr; -+ char *tok=strtok_r(buffer,"=",&ptr); -+ if (tok) { -+ strncpy(name1,tok, BUFSIZ-1); -+ strtrim(name,name1,namesize-1); -+ if ( name[0]=='#' ) return 0; -+ tok=strtok_r(NULL,"\0",&ptr); -+ if (tok) { -+ while (isspace(*tok)) tok++; -+ *val = -1; -+ if (isdigit(tok[0])) -+ *val=atoi(tok); -+ else if (!strncmp(tok, "true", sizeof("true")-1)) -+ *val = 1; -+ else if (!strncmp(tok, "false", sizeof("false")-1)) -+ *val = 0; -+ if (*val != 0 && *val != 1) { -+ fprintf(stderr,"illegal value for boolean %s=%s\n", name, tok); -+ return -1; -+ } -+ -+ } -+ } -+ return 1; -+} -+ - static int load_booleans(struct policydb *policydb, char *path) { - FILE *boolf; -- char buffer[BUFSIZ]; -+ char *buffer=NULL; -+ size_t size=0; -+ char localbools[BUFSIZ]; - char name[BUFSIZ]; -- char name1[BUFSIZ]; - int val; - int errors=0; - struct cond_bool_datum *datum; -@@ -37,28 +66,29 @@ - if (boolf == NULL) - return -1; - -- while (fgets(buffer, sizeof(buffer), boolf)) { -- char *tok=strtok(buffer,"="); -- if (tok) { -- strncpy(name1,tok, BUFSIZ-1); -- strtrim(name,name1,BUFSIZ-1); -- if ( name[0]=='#' ) continue; -- tok=strtok(NULL,"\0"); -- if (tok) { -- while (isspace(*tok)) tok++; -- val = -1; -- if (isdigit(tok[0])) -- val=atoi(tok); -- else if (!strncasecmp(tok, "true", sizeof("true")-1)) -- val = 1; -- else if (!strncasecmp(tok, "false", sizeof("false")-1)) -- val = 0; -- if (val != 0 && val != 1) { -- fprintf(stderr,"illegal value for boolean %s=%s\n", name, tok); -- errors++; -- continue; -- } -- -+ while (getline(&buffer, &size, boolf) > 0) { -+ int ret=process_boolean(buffer, name, sizeof(name), &val); -+ if (ret==-1) -+ errors++; -+ if (ret==1) { -+ datum = hashtab_search(policydb->p_bools.table, name); -+ if (!datum) { -+ fprintf(stderr,"unknown boolean %s\n", name); -+ errors++; -+ continue; -+ } -+ datum->state = val; -+ } -+ } -+ fclose(boolf); -+ snprintf(localbools,sizeof(localbools), "%s.local", path); -+ boolf = fopen(localbools,"r"); -+ if (boolf != NULL) { -+ while (getline(&buffer, &size, boolf) > 0) { -+ int ret=process_boolean(buffer, name, sizeof(name), &val); -+ if (ret==-1) -+ errors++; -+ if (ret==1) { - datum = hashtab_search(policydb->p_bools.table, name); - if (!datum) { - fprintf(stderr,"unknown boolean %s\n", name); -@@ -68,9 +98,9 @@ - datum->state = val; - } - } -+ fclose(boolf); +diff --exclude-from=exclude -N -u -r nsalibsepol/src/genbools.c libsepol-1.5.5/src/genbools.c +--- nsalibsepol/src/genbools.c 2005-03-29 21:55:26.000000000 -0500 ++++ libsepol-1.5.5/src/genbools.c 2005-04-25 15:25:55.000000000 -0400 +@@ -195,7 +195,7 @@ } -- fclose(boolf); -- -+ free(buffer); - if (errors) - errno = EINVAL; + if (evaluate_conds(&policydb) < 0) { +- __sepol_debug_printf("%s: Error while re-evaluating conditionals: %s\n", ++ __sepol_debug_printf("%s: Error while re-evaluating conditionals\n", + __FUNCTION__); + errno = EINVAL; + goto err; +diff --exclude-from=exclude -N -u -r nsalibsepol/src/hierarchy.c libsepol-1.5.5/src/hierarchy.c +--- nsalibsepol/src/hierarchy.c 2005-04-14 08:28:00.000000000 -0400 ++++ libsepol-1.5.5/src/hierarchy.c 2005-04-25 15:21:51.000000000 -0400 +@@ -269,7 +269,7 @@ + char *parent; + hierarchy_args_t *a; + role_datum_t *r, *rp; +- ebitmap_t *eb; ++ ebitmap_t *eb=NULL; + + a = (hierarchy_args_t *)args; + r = (role_datum_t *)d; diff --git a/libsepol.spec b/libsepol.spec index 17d4559..556254f 100644 --- a/libsepol.spec +++ b/libsepol.spec @@ -37,7 +37,7 @@ needed for developing applications that manipulate binary policies. %prep %setup -q -%Patch -p1 -b .rhat +%patch -p1 -b .rhat %build make CFLAGS="%{optflags}"