From 61bf36ef2d322ccdc231557a6ee45c7569a507c5 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 21 Mar 2007 17:14:10 -0400 Subject: [PATCH] [COVERITY] Fix memory leak in libe2p (e2p_edit_mntopts) Need to free memory allocated to buf. Coverity ID: 17: Resource Leak Coverity ID: 18: Resource Leak Signed-off-by: Brian Behlendorf Signed-off-by: "Theodore Ts'o" --- lib/e2p/ChangeLog | 3 ++- lib/e2p/mntopts.c | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/e2p/ChangeLog b/lib/e2p/ChangeLog index 0518b2a..557bdfd 100644 --- a/lib/e2p/ChangeLog +++ b/lib/e2p/ChangeLog @@ -1,6 +1,7 @@ 2007-03-21 Theodore Tso - * feature.c (e2p_edit_feature): Fix memory leak. + * feature.c (e2p_edit_feature), mntopts.c (e2p_edit_mntopts): Fix + memory leak. 2006-11-12 Theodore Tso diff --git a/lib/e2p/mntopts.c b/lib/e2p/mntopts.c index 6d0eca0..4e50e9f 100644 --- a/lib/e2p/mntopts.c +++ b/lib/e2p/mntopts.c @@ -98,6 +98,7 @@ int e2p_edit_mntopts(const char *str, __u32 *mntopts, __u32 ok) char *cp, *buf, *next; int neg; unsigned int mask; + int rc = 0; buf = malloc(strlen(str)+1); if (!buf) @@ -120,10 +121,14 @@ int e2p_edit_mntopts(const char *str, __u32 *mntopts, __u32 ok) cp++; break; } - if (e2p_string2mntopt(cp, &mask)) - return 1; - if (ok && !(ok & mask)) - return 1; + if (e2p_string2mntopt(cp, &mask)) { + rc = 1; + break; + } + if (ok && !(ok & mask)) { + rc = 1; + break; + } if (mask & EXT3_DEFM_JMODE) *mntopts &= ~EXT3_DEFM_JMODE; if (neg) @@ -132,5 +137,6 @@ int e2p_edit_mntopts(const char *str, __u32 *mntopts, __u32 ok) *mntopts |= mask; cp = next ? next+1 : 0; } - return 0; + free(buf); + return rc; } -- 1.8.3.1