Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Jun 2010 02:35:45 GMT
From:      Julien Laffaye <jlaffaye@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 179820 for review
Message-ID:  <201006190235.o5J2Zjbr033768@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@179820?ac=10

Change 179820 by jlaffaye@jlaffaye-chulak on 2010/06/19 02:34:57

	Use Boolean type wherever applicable.
	Check for memory allocation errors.

Affected files ...

.. //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/perform.c#5 edit

Differences ...

==== //depot/projects/soc2010/pkg_complete/usr.sbin/pkg_install/complete/perform.c#5 (text+ko) ====

@@ -12,7 +12,7 @@
 
 static int pkg_get_deps(char *, char *, struct list_deps *);
 static int pkg_sort_deps(const void *, const void *);
-static int pkg_depend_on(const Package *, const Package *);
+static Boolean pkg_depend_on(const Package *, const Package *);
 
 int
 pkg_do(char *pkgname, char *outname)
@@ -23,7 +23,7 @@
 	struct list_deps deps;
 	char fname[PATH_MAX], buf[1024], *ext;
 	ssize_t r;
-	int fd, err = 0;
+	int fd, retcode = 0;
 
 	if ((ext = strrchr(pkgname, '.')) == NULL) {
 		warn("strrchr()");
@@ -33,6 +33,8 @@
 	deps.size = 100;
 	deps.len = 0;
 	deps.pkgs = malloc(sizeof(Package)*(deps.size));
+	if (deps.pkgs == NULL)
+		err(1, "malloc()");
 
 	if(pkg_get_deps(pkgname, ext, &deps) > 0)
 		return (1);
@@ -65,7 +67,7 @@
 		snprintf(fname, sizeof(fname), "%s%s", deps.pkgs[i].name, ext);
 		if ((fd = open(fname, O_RDONLY)) < 0) {
 			warn("open(%s)", fname);
-			err = 1;
+			retcode = 1;
 			break;
 		}
 		fstat(fd, &st);
@@ -75,14 +77,14 @@
 		for (;;) {
 			if ((r = read(fd, buf, sizeof(buf))) == -1) {
 				warn("read()");
-				err = 1;
+				retcode = 1;
 				break;
 			}
 			if (r <= 0)
 				break;
 			if (archive_write_data(a, buf, r) != r) {
 				warnx("%s", archive_error_string(a));
-				err = 1;
+				retcode = 1;
 				break;
 			}
 		}
@@ -100,12 +102,12 @@
 	 * An error at this level means that we failed to create the archive.
 	 * Be nice and remove this useless file.
 	 */
-	if (err != 0) {
+	if (retcode != 0) {
 		warnx("removing corrupted package file");
 		unlink(outname);
 	}
 
-	return (err);
+	return (retcode);
 }
 
 /*
@@ -124,8 +126,8 @@
 	size_t i;
 	char *plist_buf;
 	char fname[PATH_MAX];
-	int err = 0;
-	short found = 0;
+	int retcode = 0;
+	Boolean found = 0;
 
 	if ((plist_size = unpack_to_buffer(pkgname, CONTENTS_FNAME, &plist_buf))
 	     == -1) {
@@ -134,13 +136,19 @@
 	}
 
 	pkg.head = pkg.tail = NULL;
-	read_plist_from_buffer(&pkg, plist_buf, plist_size);
+	retcode = read_plist_from_buffer(&pkg, plist_buf, plist_size);
 	free(plist_buf);
+	if (retcode != 0) {
+		warnx("unable to parse %s's plist", pkgname);
+		return (1);
+	}
 
 	/* Register the current package */
 	if (deps->size <= deps->len) {
 		deps->size *= 2;
 		deps->pkgs = realloc(deps->pkgs, sizeof(Package)*(deps->size));
+		if (deps->pkgs == NULL)
+			err(1, "realloc()");
 	}
 	deps->pkgs[deps->len] = pkg;
 	deps->len++;
@@ -151,22 +159,22 @@
 	*/
 	for (p = pkg.head; p; p = p->next) {
 		if (p->type == PLIST_PKGDEP) {
-			found = 0;
+			found = FALSE;
 			for (i=0; i < deps->len; i++) {
 				if (strcmp(deps->pkgs[i].name, p->name) == 0) {
-					found = 1;
+					found = TRUE;
 					break;
 				}
 			}
-			if (found == 0) {
+			if (found == FALSE) {
 				snprintf(fname, sizeof(fname), "%s%s", p->name,
 					  ext);
-				err += pkg_get_deps(fname, ext, deps);
+				retcode += pkg_get_deps(fname, ext, deps);
 			}
 		}
 	}
 
-	return (err);
+	return (retcode);
 }
 
 /*
@@ -189,15 +197,15 @@
 	return (0);
 }
 
-/* Returns 1 if `pkga` depends on `pkgb`, 0 otherwise */
-static int
+/* Returns TRUE if `pkga` depends on `pkgb`, FALSE otherwise */
+static Boolean
 pkg_depend_on(const Package *pkga, const Package *pkgb)
 {
 	PackingList p;
 	for (p = pkga->head; p; p = p->next)
 		if (p->type == PLIST_PKGDEP)
 			if (strcmp(pkgb->name, p->name) == 0)
-				return (1);
+				return (TRUE);
 
-	return (0);
+	return (FALSE);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006190235.o5J2Zjbr033768>