--- nsalibselinux/src/init.c 2009-07-14 11:16:03.000000000 -0400 +++ libselinux-2.0.90/src/init.c 2010-02-22 11:04:16.000000000 -0500 @@ -23,7 +23,7 @@ static void init_selinuxmnt(void) { char *buf=NULL, *p; - FILE *fp; + FILE *fp=NULL; struct statfs sfbuf; int rc; size_t len; @@ -57,16 +57,17 @@ break; } } - fclose(fp); - if (!exists) - return; + if (!exists) + goto out; + + fclose(fp); /* At this point, the usual spot doesn't have an selinuxfs so * we look around for it */ fp = fopen("/proc/mounts", "r"); if (!fp) - return; + goto out; __fsetlocking(fp, FSETLOCKING_BYCALLER); while ((num = getline(&buf, &len, fp)) != -1) { @@ -90,7 +91,8 @@ out: free(buf); - fclose(fp); + if (fp) + fclose(fp); return; }