fs: Fix bad frees
authorSimon Wilkinson <sxw@your-file-system.com>
Sat, 31 Mar 2012 11:01:46 +0000 (07:01 -0400)
committerDerrick Brashear <shadow@dementix.org>
Mon, 9 Apr 2012 01:18:59 +0000 (18:18 -0700)
On an error GetLastComponent was freeing completely the wrong thing.
Fix this so it frees the memory it has allocated, and not some random
stack pointer.

Caught by clang-analyzer

Change-Id: I8b65f7ab36647b876fae5cbe59d82fd8d38ce0b7
Reviewed-on: http://gerrit.openafs.org/7093
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

src/venus/fs.c

index bfb45e5..86ee2b1 100644 (file)
@@ -1716,6 +1716,9 @@ GetLastComponent(const char *data, char **outdir, char **outbase,
     char *dirname = NULL;
     char *basename = NULL;
 
+    *outbase = NULL;
+    *outdir = NULL;
+
     if (thru_symlink)
        *thru_symlink = 0;
 
@@ -1800,10 +1803,10 @@ GetLastComponent(const char *data, char **outdir, char **outbase,
     return 0;
 
 out:
-    if (outdir)
-       free(outdir);
-    if (outbase)
-       free(outbase);
+    if (dirname)
+       free(dirname);
+    if (basename)
+       free(basename);
     return -1;
 }