summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornalin <nalin>2003-11-04 19:34:52 +0000
committernalin <nalin>2003-11-04 19:34:52 +0000
commitc7097ed9b80cb6d5b3119b5afd0f8ae9d387a26a (patch)
tree0c923ae2fa4f200d0d3a856dabb5b0e40fe8aae3
parentc55ab9f731f5089d9aea36748faa19c188c0d243 (diff)
downloadnss_directories-c7097ed9b80cb6d5b3119b5afd0f8ae9d387a26a.tar.gz
nss_directories-c7097ed9b80cb6d5b3119b5afd0f8ae9d387a26a.tar.xz
nss_directories-c7097ed9b80cb6d5b3119b5afd0f8ae9d387a26a.zip
- zero out pointers after freeing them so that we don't go trying to free
them later when an overzealous app calls endXXent() just in case
-rw-r--r--src/generic.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/generic.c b/src/generic.c
index 13df056..7266402 100644
--- a/src/generic.c
+++ b/src/generic.c
@@ -16,7 +16,7 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-#ident "$Id: generic.c,v 1.5 2003/10/23 01:44:42 nalin Exp $"
+#ident "$Id: generic.c,v 1.6 2003/11/04 19:34:52 nalin Exp $"
#include "../config.h"
@@ -150,6 +150,7 @@ getgen(struct STRUCTURE *result,
if ((fstat(fileno(fp), &st) != 0) ||
(!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode))) {
fclose(fp);
+ fp = NULL;
continue;
}
@@ -161,7 +162,9 @@ getgen(struct STRUCTURE *result,
fseek(fp, offset, SEEK_SET);
free(line);
fclose(fp);
+ fp = NULL;
closedir(dir);
+ dir = NULL;
errno = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
@@ -178,7 +181,9 @@ getgen(struct STRUCTURE *result,
case -1:
free(line);
fclose(fp);
+ fp = NULL;
closedir(dir);
+ dir = NULL;
errno = ERANGE;
return NSS_STATUS_TRYAGAIN;
break;
@@ -195,7 +200,9 @@ getgen(struct STRUCTURE *result,
*result = structure;
free(line);
fclose(fp);
+ fp = NULL;
closedir(dir);
+ dir = NULL;
return NSS_STATUS_SUCCESS;
}
@@ -206,10 +213,12 @@ getgen(struct STRUCTURE *result,
/* Close this file. */
fclose(fp);
+ fp = NULL;
}
/* Close this directory. */
closedir(dir);
+ dir = NULL;
/* Tell the caller that we didn't find anything. */
return NSS_STATUS_NOTFOUND;