From owner-p4-projects@FreeBSD.ORG Sat Jun 19 02:35:46 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 24EAF1065676; Sat, 19 Jun 2010 02:35:46 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C4FEC1065672 for ; Sat, 19 Jun 2010 02:35:45 +0000 (UTC) (envelope-from jlaffaye@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id B23828FC1F for ; Sat, 19 Jun 2010 02:35:45 +0000 (UTC) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id o5J2Zjws033770 for ; Sat, 19 Jun 2010 02:35:45 GMT (envelope-from jlaffaye@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id o5J2Zjbr033768 for perforce@freebsd.org; Sat, 19 Jun 2010 02:35:45 GMT (envelope-from jlaffaye@FreeBSD.org) Date: Sat, 19 Jun 2010 02:35:45 GMT Message-Id: <201006190235.o5J2Zjbr033768@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jlaffaye@FreeBSD.org using -f From: Julien Laffaye To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 179820 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 19 Jun 2010 02:35:46 -0000 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); }