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

Nicolas FRANÇOIS nekral-guest at alioth.debian.org
Thu Mar 18 00:01:14 UTC 2010


Author: nekral-guest
Date: 2010-03-18 00:01:00 +0000 (Thu, 18 Mar 2010)
New Revision: 3124

Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/lib/tcbfuncs.c
Log:
	* lib/tcbfuncs.c: Only FreeBSD specify that the returned buffer is
	NULL in case of failure. The return value of asprintf shall be
	checked.

Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2010-03-18 00:00:05 UTC (rev 3123)
+++ upstream/trunk/ChangeLog	2010-03-18 00:01:00 UTC (rev 3124)
@@ -4,6 +4,9 @@
 	* lib/tcbfuncs.h, lib/tcbfuncs.c: Return a shadowtcb_status
 	instead of an int.
 	* lib/tcbfuncs.c: Do not return in OUT_OF_MEMORY.
+	* lib/tcbfuncs.c: Only FreeBSD specify that the returned buffer is
+	NULL in case of failure. The return value of asprintf shall be
+	checked.
 
 2010-03-17  Nicolas François  <nicolas.francois at centraliens.net>
 

Modified: upstream/trunk/lib/tcbfuncs.c
===================================================================
--- upstream/trunk/lib/tcbfuncs.c	2010-03-18 00:00:05 UTC (rev 3123)
+++ upstream/trunk/lib/tcbfuncs.c	2010-03-18 00:01:00 UTC (rev 3124)
@@ -74,19 +74,24 @@
 	char *ret;
 
 	if (!getdef_bool("TCB_SYMLINKS") || uid < SHADOWTCB_HASH_BY) {
-		asprintf(&ret, "%s", name);
+		if (asprintf(&ret, "%s", name) == -1) {
+			OUT_OF_MEMORY;
+			return NULL;
+		}
 	} else if (uid < SHADOWTCB_HASH_BY * SHADOWTCB_HASH_BY) {
-		asprintf(&ret, ":%dK/%s", uid / SHADOWTCB_HASH_BY, name);
+		if (asprintf(&ret, ":%dK/%s", uid / SHADOWTCB_HASH_BY, name) == -1) {
+			OUT_OF_MEMORY;
+			return NULL;
+		}
 	} else {
-		asprintf(&ret, ":%dM/:%dK/%s",
+		if (asprintf(&ret, ":%dM/:%dK/%s",
 			uid / (SHADOWTCB_HASH_BY * SHADOWTCB_HASH_BY),
 			(uid % (SHADOWTCB_HASH_BY * SHADOWTCB_HASH_BY)) / SHADOWTCB_HASH_BY,
-			name);
+			name) == -1) {
+			OUT_OF_MEMORY;
+			return NULL;
+		}
 	}
-	if (!ret) {
-		OUT_OF_MEMORY;
-		return NULL;
-	}
 	return ret;
 }
 
@@ -97,8 +102,7 @@
 	char link[8192];
 	int ret;
 
-	asprintf(&path, TCB_DIR "/%s", name);
-	if (!path) {
+	if (asprintf(&path, TCB_DIR "/%s", name) == -1) {
 		OUT_OF_MEMORY;
 		return NULL;
 	}
@@ -147,12 +151,12 @@
 
 	if (!(rel = shadowtcb_path_rel(name, uid)))
 		return 0;
-	asprintf(&ret, TCB_DIR "/%s", rel);
-	free(rel);
-	if (!ret) {
+	if (asprintf(&ret, TCB_DIR "/%s", rel) == -1) {
 		OUT_OF_MEMORY;
+		free(rel);
 		return NULL;
 	}
+	free(rel);
 	return ret;
 }
 
@@ -162,12 +166,12 @@
 
 	if (!(rel = shadowtcb_path_rel_existing(name)))
 		return 0;
-	asprintf(&ret, TCB_DIR "/%s", rel);
-	free(rel);
-	if (!ret) {
+	if (asprintf(&ret, TCB_DIR "/%s", rel) == -1) {
 		OUT_OF_MEMORY;
+		free(rel);
 		return NULL;
 	}
+	free(rel);
 	return ret;
 }
 
@@ -185,8 +189,7 @@
 	}
 	while ((ind = strchr(ptr, '/'))) {
 		*ind = 0;
-		asprintf(&dir, TCB_DIR "/%s", path);
-		if (!dir) {
+		if (asprintf(&dir, TCB_DIR "/%s", path) == -1) {
 			OUT_OF_MEMORY;
 			return SHADOWTCB_FAILURE;
 		}
@@ -222,8 +225,7 @@
 	int i;
 
 	for (i = 0; i < 3; i++) {
-		asprintf(&tmp, TCB_FMT "%s", user, suffs[i]);
-		if (!tmp) {
+		if (asprintf(&tmp, TCB_FMT "%s", user, suffs[i]) == -1) {
 			OUT_OF_MEMORY;
 			return SHADOWTCB_FAILURE;
 		}
@@ -245,8 +247,7 @@
 	shadowtcb_status ret = SHADOWTCB_SUCCESS;
 	while ((ind = strrchr(path, '/'))) {
 		*ind = 0;
-		asprintf(&dir, TCB_DIR "/%s", path);
-		if (!dir) {
+		if (asprintf(&dir, TCB_DIR "/%s", path) == -1) {
 			OUT_OF_MEMORY;
 			return SHADOWTCB_FAILURE;
 		}
@@ -272,8 +273,7 @@
 	struct stat oldmode;
 	shadowtcb_status ret = SHADOWTCB_FAILURE;
 
-	asprintf(&olddir, TCB_DIR "/%s", stored_tcb_user);
-	if (!olddir)
+	if (asprintf(&olddir, TCB_DIR "/%s", stored_tcb_user) == -1)
 		goto out_free_nomem;
 	if (stat(olddir, &oldmode)) {
 		fprintf(stderr, _("%s: Cannot stat %s: %s\n"), Prog, olddir, strerror(errno));
@@ -303,8 +303,7 @@
 		fprintf(stderr, _("%s: Cannot remove %s: %s\n"), Prog, olddir, strerror(errno));
 		goto out_free;
 	}
-	asprintf(&newdir, TCB_DIR "/%s", user_newname);
-	if (!newdir)
+	if (asprintf(&newdir, TCB_DIR "/%s", user_newname) == -1)
 		goto out_free_nomem;
 	if (!(real_new_dir_rel = shadowtcb_path_rel(user_newname, the_newid)))
 		goto out_free;
@@ -340,9 +339,9 @@
 	stored_tcb_user = strdup(name);
 	if (!stored_tcb_user) {
 		OUT_OF_MEMORY;
+		return SHADOWTCB_FAILURE;
 	}
-	asprintf(&buf, TCB_FMT, name);
-	if (!buf) {
+	if (asprintf(&buf, TCB_FMT, name) == -1) {
 		OUT_OF_MEMORY;
 		return SHADOWTCB_FAILURE;
 	}
@@ -364,8 +363,7 @@
 		return SHADOWTCB_FAILURE;
 	free(path);
 	free(rel);
-	asprintf(&path, TCB_DIR "/%s", name);
-	if (!path) {
+	if (asprintf(&path, TCB_DIR "/%s", name) == -1) {
 		OUT_OF_MEMORY;
 		return SHADOWTCB_FAILURE;
 	}
@@ -389,9 +387,8 @@
 		return SHADOWTCB_FAILURE;
 	if (user_newid == -1)
 		return SHADOWTCB_SUCCESS;
-	asprintf(&tcbdir, TCB_DIR "/%s", user_newname);
-	asprintf(&shadow, TCB_FMT, user_newname);
-	if (!tcbdir || !shadow) {
+	if (   (asprintf(&tcbdir, TCB_DIR "/%s", user_newname) == -1)
+	    || (asprintf(&shadow, TCB_FMT, user_newname) == -1)) {
 		OUT_OF_MEMORY;
 		return SHADOWTCB_FAILURE;
 	}
@@ -470,9 +467,8 @@
 		authgid = shadowgid;
 	}
 	
-	asprintf(&dir, TCB_DIR "/%s", name);
-	asprintf(&shadow, TCB_FMT, name);
-	if (!dir || !shadow) {
+	if (   (asprintf(&dir, TCB_DIR "/%s", name) == -1)
+	    || (asprintf(&shadow, TCB_FMT, name) == -1)) {
 		OUT_OF_MEMORY;
 		return SHADOWTCB_FAILURE;
 	}




More information about the Pkg-shadow-commits mailing list