diff options
| author | Florent Thoumie <flz@FreeBSD.org> | 2008-12-27 14:34:33 +0000 |
|---|---|---|
| committer | Florent Thoumie <flz@FreeBSD.org> | 2008-12-27 14:34:33 +0000 |
| commit | 7e410be8f0fcb3716a04a7eed991474fcd29400a (patch) | |
| tree | f643724d909becc8fd88de3c7c880b3aeb784055 /usr.sbin/pkg_install/lib | |
| parent | 2155338ac1e86ea9a014a7ad6d3abda7d0638a51 (diff) | |
Notes
Diffstat (limited to 'usr.sbin/pkg_install/lib')
| -rw-r--r-- | usr.sbin/pkg_install/lib/lib.h | 2 | ||||
| -rw-r--r-- | usr.sbin/pkg_install/lib/plist.c | 14 |
2 files changed, 3 insertions, 13 deletions
diff --git a/usr.sbin/pkg_install/lib/lib.h b/usr.sbin/pkg_install/lib/lib.h index 4dbe2c09f28a5..5f66a3ae7cc7c 100644 --- a/usr.sbin/pkg_install/lib/lib.h +++ b/usr.sbin/pkg_install/lib/lib.h @@ -105,7 +105,7 @@ * Version of the package tools - increase only when some * functionality used by bsd.port.mk is changed, added or removed */ -#define PKG_INSTALL_VERSION 20081225 +#define PKG_INSTALL_VERSION 20081227 #define PKG_WRAPCONF_FNAME "/var/db/pkg_install.conf" #define main(argc, argv) real_main(argc, argv) diff --git a/usr.sbin/pkg_install/lib/plist.c b/usr.sbin/pkg_install/lib/plist.c index f9b05b0fb608d..8cb33aa013bd9 100644 --- a/usr.sbin/pkg_install/lib/plist.c +++ b/usr.sbin/pkg_install/lib/plist.c @@ -544,9 +544,8 @@ delete_package(Boolean ign_err, Boolean nukedirs, Package *pkg) int delete_hierarchy(const char *dir, Boolean ign_err, Boolean nukedirs) { - char *cp1, *cp2, *realdir; + char *cp1, *cp2, realdir[FILENAME_MAX]; - realdir = malloc(FILENAME_MAX); if (realdir == NULL) { warnx("Couldn't allocate enough memory\n"); return (ign_err ? SUCCESS : FAIL); @@ -555,7 +554,7 @@ delete_hierarchy(const char *dir, Boolean ign_err, Boolean nukedirs) if (issymlink(dir) && readlink(dir, realdir, FILENAME_MAX-1) == -1) return (ign_err ? SUCCESS : FAIL); - strlcpy(realdir, dir, FILENAME_MAX); + strlcpy(realdir, dir, FILENAME_MAX-1); cp1 = cp2 = strdup(realdir); if (cp1 == NULL) { @@ -568,34 +567,29 @@ delete_hierarchy(const char *dir, Boolean ign_err, Boolean nukedirs) warnx("%s '%s' doesn't exist", isdir(realdir) ? "directory" : "file", realdir); free(cp1); - free(realdir); return (ign_err ? SUCCESS : FAIL); } else if (nukedirs) { if (vsystem("%s -r%s %s", REMOVE_CMD, (ign_err ? "f" : ""), realdir)) { free(cp1); - free(realdir); return (ign_err ? SUCCESS : FAIL); } } else if (isdir(realdir)) { if (RMDIR(realdir)) { free(cp1); - free(realdir); return (ign_err ? SUCCESS : FAIL); } } else { if (REMOVE(realdir, ign_err)) { free(cp1); - free(realdir); return (ign_err ? SUCCESS : FAIL); } } if (!nukedirs) { free(cp1); - free(realdir); return (SUCCESS); } while (cp2) { @@ -603,18 +597,15 @@ delete_hierarchy(const char *dir, Boolean ign_err, Boolean nukedirs) *cp2 = '\0'; if (!isemptydir(realdir)) { free(cp1); - free(realdir); return (SUCCESS); } if (RMDIR(realdir) && !ign_err) { if (!fexists(realdir)) { warnx("directory '%s' doesn't exist", realdir); free(cp1); - free(realdir); return (SUCCESS); } else { free(cp1); - free(realdir); return (FAIL); } } @@ -629,7 +620,6 @@ delete_hierarchy(const char *dir, Boolean ign_err, Boolean nukedirs) } } free(cp1); - free(realdir); return (SUCCESS); } |
