summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Kiddle <okiddle@yahoo.co.uk>2018-04-07 12:51:01 +0200
committerOliver Kiddle <okiddle@yahoo.co.uk>2018-04-07 14:37:46 +0200
commit90afd3692280499dd191239f5fd2a69b183d24e6 (patch)
tree3deed83824080ff5d051bb3a1619626f5754d05e
parentbd05c4b2def7defee3787df24e2cfb9f96900e6c (diff)
downloadzsh-90afd3692280499dd191239f5fd2a69b183d24e6.tar.gz
zsh-90afd3692280499dd191239f5fd2a69b183d24e6.zip
42597: plug memory leak found by coverity
-rw-r--r--ChangeLog2
-rw-r--r--Src/params.c4
2 files changed, 5 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 2e20a7540..49c8a681f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
2018-04-07 Oliver Kiddle <okiddle@yahoo.co.uk>
+ * 42597: Src/params.c: plug memory leak found by coverity
+
* 42595: Src/utils.c: remove dead code flagged by coverity
* Matthew Martin: 42604: Completion/BSD/Command/_signify,
diff --git a/Src/params.c b/Src/params.c
index de7730ae7..36f5f0676 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -3216,7 +3216,7 @@ assignaparam(char *s, char **val, int flags)
* This only applies if the flag ASSPM_KEY_VALUE is passed in,
* indicating prefork() detected this syntax.
*
- * For associative arrays we just junk the Makrer elements.
+ * For associative arrays we just junk the Marker elements.
*/
if (flags & ASSPM_KEY_VALUE) {
char **aptr;
@@ -3243,6 +3243,7 @@ assignaparam(char *s, char **val, int flags)
(!isset(KSHARRAYS) && *iptr == 0)) {
unqueue_signals();
zerr("bad subscript for direct array assignment: %s", *aptr);
+ freearray(val);
return NULL;
}
if (!isset(KSHARRAYS))
@@ -3260,6 +3261,7 @@ assignaparam(char *s, char **val, int flags)
fullval = zshcalloc((maxlen+1) * sizeof(char *));
if (!fullval) {
zerr("array too large");
+ freearray(val);
return NULL;
}
fullval[maxlen] = NULL;