[Pkg-shadow-commits] r2797 - in upstream/trunk: . lib

Nicolas FRANÇOIS nekral-guest at alioth.debian.org
Fri Apr 24 23:32:52 UTC 2009


Author: nekral-guest
Date: 2009-04-24 23:32:52 +0000 (Fri, 24 Apr 2009)
New Revision: 2797

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/lib/sgroupio.c
Log:
	* lib/sgroupio.c: Free allocated structures on failure.
	* lib/sgroupio.c: Added splint annotations.


Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2009-04-24 23:28:15 UTC (rev 2796)
+++ upstream/trunk/ChangeLog	2009-04-24 23:32:52 UTC (rev 2797)
@@ -1,5 +1,10 @@
 2009-04-25  Nicolas François  <nicolas.francois at centraliens.net>
 
+	* lib/sgroupio.c: Free allocated structures on failure.
+	* lib/sgroupio.c: Added splint annotations.
+
+2009-04-25  Nicolas François  <nicolas.francois at centraliens.net>
+
 	* lib/Makefile.am, lib/get_pid.c, lib/getulong.c: Added get_pid()
 	and getulong().
 

Modified: upstream/trunk/lib/sgroupio.c
===================================================================
--- upstream/trunk/lib/sgroupio.c	2009-04-24 23:28:15 UTC (rev 2796)
+++ upstream/trunk/lib/sgroupio.c	2009-04-24 23:32:52 UTC (rev 2797)
@@ -54,21 +54,34 @@
 	*sg = *sgent;
 	sg->sg_name = strdup (sgent->sg_name);
 	if (NULL == sg->sg_name) {
+		free (sg);
 		return NULL;
 	}
 	sg->sg_passwd = strdup (sgent->sg_passwd);
 	if (NULL == sg->sg_passwd) {
+		free (sg->sg_name);
+		free (sg);
 		return NULL;
 	}
 
 	for (i = 0; NULL != sgent->sg_adm[i]; i++);
 	sg->sg_adm = (char **) malloc ((i + 1) * sizeof (char *));
 	if (NULL == sg->sg_adm) {
+		free (sg->sg_passwd);
+		free (sg->sg_name);
+		free (sg);
 		return NULL;
 	}
 	for (i = 0; NULL != sgent->sg_adm[i]; i++) {
 		sg->sg_adm[i] = strdup (sgent->sg_adm[i]);
 		if (NULL == sg->sg_adm[i]) {
+			for (i = 0; NULL != sg->sg_adm[i]; i++) {
+				free (sg->sg_adm[i]);
+			}
+			free (sg->sg_adm);
+			free (sg->sg_passwd);
+			free (sg->sg_name);
+			free (sg);
 			return NULL;
 		}
 	}
@@ -77,11 +90,29 @@
 	for (i = 0; NULL != sgent->sg_mem[i]; i++);
 	sg->sg_mem = (char **) malloc ((i + 1) * sizeof (char *));
 	if (NULL == sg->sg_mem) {
+		for (i = 0; NULL != sg->sg_adm[i]; i++) {
+			free (sg->sg_adm[i]);
+		}
+		free (sg->sg_adm);
+		free (sg->sg_passwd);
+		free (sg->sg_name);
+		free (sg);
 		return NULL;
 	}
 	for (i = 0; NULL != sgent->sg_mem[i]; i++) {
 		sg->sg_mem[i] = strdup (sgent->sg_mem[i]);
 		if (NULL == sg->sg_mem[i]) {
+			for (i = 0; NULL != sg->sg_mem[i]; i++) {
+				free (sg->sg_mem[i]);
+			}
+			free (sg->sg_mem);
+			for (i = 0; NULL != sg->sg_adm[i]; i++) {
+				free (sg->sg_adm[i]);
+			}
+			free (sg->sg_adm);
+			free (sg->sg_passwd);
+			free (sg->sg_name);
+			free (sg);
 			return NULL;
 		}
 	}
@@ -192,7 +223,7 @@
 	return commonio_open (&gshadow_db, mode);
 }
 
-const struct sgrp *sgr_locate (const char *name)
+/*@observer@*/ /*@null@*/const struct sgrp *sgr_locate (const char *name)
 {
 	return commonio_locate (&gshadow_db, name);
 }
@@ -232,7 +263,7 @@
 	gshadow_db.changed = true;
 }
 
-/*@null@*/struct commonio_entry *__sgr_get_head (void)
+/*@dependent@*/ /*@null@*/struct commonio_entry *__sgr_get_head (void)
 {
 	return gshadow_db.head;
 }




More information about the Pkg-shadow-commits mailing list