This is the mail archive of the cluster-cvs@sourceware.org mailing list for the cluster.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=56c2ba92e4b488abbf6834702fa5f6d85d507c8c Commit: 56c2ba92e4b488abbf6834702fa5f6d85d507c8c Parent: f252e8d5c06dbcf33214271540dcad47b4f7ffad Author: Fabio M. Di Nitto <fdinitto@redhat.com> AuthorDate: Fri Mar 6 20:48:11 2009 +0100 Committer: Fabio M. Di Nitto <fdinitto@redhat.com> CommitterDate: Fri Mar 6 20:48:11 2009 +0100 notifyd: don't leak memory if we fail to fork cman_notify on error path we were not freeing envp strings. Signed-off-by: Fabio M. Di Nitto <fdinitto@redhat.com> --- cman/notifyd/main.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cman/notifyd/main.c b/cman/notifyd/main.c index e864690..bcacefa 100644 --- a/cman/notifyd/main.c +++ b/cman/notifyd/main.c @@ -210,6 +210,7 @@ static void dispatch_notification(char *str, int *quorum) char scratch[PATH_MAX]; pid_t notify_pid; int pidstatus; + int err = 0; if (!str) return; @@ -236,13 +237,15 @@ static void dispatch_notification(char *str, int *quorum) { case -1: /* unable to fork */ - exit(EXIT_FAILURE); + err = 1; + goto out; break; case 0: /* child */ execve(SBINDIR "/cman_notify", argv, envp); /* unable to execute cman_notify */ - exit(EXIT_FAILURE); + err = 1; + goto out; break; default: /* parent */ @@ -250,12 +253,15 @@ static void dispatch_notification(char *str, int *quorum) break; } +out: while(envptr >= 0) { if (envp[envptr]) free(envp[envptr]); envptr--; } + if (err) + exit(EXIT_FAILURE); } static void cman_callback(cman_handle_t ch, void *private, int reason, int arg)
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |