[PATCH 09/19] Removed resource leaks from nfsidmap/static.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



nfsidmap/static.c:350: leaked_storage: Variable "princ_list"
        going out of scope leaks the storage it points to.
nfsidmap/static.c:358: leaked_storage: Variable "princ_list"
        going out of scope leaks the storage it points to.
nfsidmap/static.c:360: leaked_storage: Variable "unode"
	going out of scope leaks the storage it points to.
nfsidmap/static.c:382: leaked_storage: Variable "princ_list"
        going out of scope leaks the storage it points to.
nfsidmap/static.c:390: leaked_storage: Variable "gnode"
	going out of scope leaks the storage it points to.

Signed-off-by: Steve Dickson <steved@xxxxxxxxxx>
---
 support/nfsidmap/static.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/support/nfsidmap/static.c b/support/nfsidmap/static.c
index f7b8a67..8ac4a39 100644
--- a/support/nfsidmap/static.c
+++ b/support/nfsidmap/static.c
@@ -347,6 +347,7 @@ static int static_init(void) {
 			warnx("static_init: calloc (1, %lu) failed",
 				(unsigned long)sizeof *unode);
 			free(pw);
+			conf_free_list(princ_list);
 			return -ENOMEM;
 		}
 		unode->uid = pw->pw_uid;
@@ -355,6 +356,9 @@ static int static_init(void) {
 		unode->localname = conf_get_str("Static", cln->field);
 		if (!unode->localname) {
 			free(pw);
+			free(unode->principal);
+			free(unode);
+			conf_free_list(princ_list);
 			return -ENOENT;
 		}
 
@@ -379,6 +383,7 @@ static int static_init(void) {
 			warnx("static_init: calloc (1, %lu) failed",
 				(unsigned long)sizeof *gnode);
 			free(gr);
+			conf_free_list(princ_list);
 			return -ENOMEM;
 		}
 		gnode->gid = gr->gr_gid;
@@ -387,6 +392,9 @@ static int static_init(void) {
 		gnode->localgroup = conf_get_str("Static", cln->field);
 		if (!gnode->localgroup) {
 			free(gr);
+			free(gnode->principal);
+			free(gnode);
+			conf_free_list(princ_list);
 			return -ENOENT;
 		}
 
@@ -394,6 +402,8 @@ static int static_init(void) {
 
 		LIST_INSERT_HEAD (&gid_mappings[gid_hash(gnode->gid)], gnode, link);
 	}
+	
+	conf_free_list(princ_list);
 	return 0;
 }
 
-- 
2.20.1




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux