lwp: Fix possible memory leak from scan-build 80/13080/3
authorPat Riehecky <riehecky@fnal.gov>
Wed, 23 May 2018 20:42:09 +0000 (15:42 -0500)
committerBenjamin Kaduk <kaduk@mit.edu>
Fri, 25 May 2018 01:52:59 +0000 (21:52 -0400)
It is possible for LWP_CreateProcess to return early. When it does, it
should free up any memory it allocated before leaving scope.

Change-Id: Ib5644d36dc01bbac33804f4a039661ce2c78969d
Reviewed-on: https://gerrit.openafs.org/13080
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Marcio Brito Barbosa <mbarbosa@sinenomine.net>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>

src/lwp/lwp.c

index 9cf84b9..3ff9afc 100644 (file)
@@ -342,6 +342,7 @@ LWP_CreateProcess(void *(*ep) (void *), int stacksize, int priority, void *parm,
        if ((stackmemory = malloc(stacksize + 7)) == NULL)
 #endif /* !AFS_DARWIN_ENV */
        {
+           free(temp);
            Set_LWP_RC();
            return LWP_ENOMEM;
        }
@@ -353,6 +354,8 @@ LWP_CreateProcess(void *(*ep) (void *), int stacksize, int priority, void *parm,
 #endif /* !AFS_DARWIN_ENV */
 #endif
        if (priority < 0 || priority >= MAX_PRIORITIES) {
+           free(temp);
+           free(stackmemory);
            Set_LWP_RC();
            return LWP_EBADPRI;
        }