From f72c8f669977aa6373504d744a0262f7e12cfd9a Mon Sep 17 00:00:00 2001 From: Wolfgang Rosenauer Date: Mon, 18 Jan 2010 12:38:17 +0100 Subject: [PATCH] Follow up for Bug 536352 (missing null check and memory leak in nsinstall.c) to fix orange --- js/src/config/nsinstall.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/js/src/config/nsinstall.c b/js/src/config/nsinstall.c index b6ca0e3694e3..355a092395a7 100644 --- a/js/src/config/nsinstall.c +++ b/js/src/config/nsinstall.c @@ -258,10 +258,15 @@ copydir( char *from, char *to, mode_t mode, char *group, char *owner, sprintf(destdir, "%s%s%s", to, _DIRECTORY_SEPARATOR, base); if (mkdirs(destdir, mode) != 0) { fail("cannot make directory %s\n", destdir); + free(destdir); return; } - dir = opendir(from); + if (!(dir = opendir(from))) { + fail("cannot open directory %s\n", from); + free(destdir); + return; + } direntry = xmalloc((unsigned int)PATH_MAX); destentry = xmalloc((unsigned int)PATH_MAX); @@ -280,6 +285,7 @@ copydir( char *from, char *to, mode_t mode, char *group, char *owner, copyfile( direntry, destentry, mode, group, owner, dotimes, uid, gid ); } + free(destdir); free(direntry); free(destentry); closedir(dir);