diff options
author | Chet Ramey <chet.ramey@case.edu> | 2021-05-04 14:29:06 -0400 |
---|---|---|
committer | Chet Ramey <chet.ramey@case.edu> | 2021-05-04 14:29:06 -0400 |
commit | cc978a670597afc3251baca3a7db553f36946c22 (patch) | |
tree | 32fda48b93a0521ebd092091bc10a6b47927a83c /arrayfunc.c | |
parent | f3a35a2d601a55f337f8ca02a541f8c033682247 (diff) | |
download | bash-cc978a670597afc3251baca3a7db553f36946c22.tar.gz |
Bash-5.1 patch 5: fix memory leaks in compound array assignments
Diffstat (limited to 'arrayfunc.c')
-rw-r--r-- | arrayfunc.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/arrayfunc.c b/arrayfunc.c index 8231ba1e..9338dfc7 100644 --- a/arrayfunc.c +++ b/arrayfunc.c @@ -564,12 +564,9 @@ assign_assoc_from_kvlist (var, nlist, h, flags) { WORD_LIST *list; char *akey, *aval, *k, *v; - int free_aval; for (list = nlist; list; list = list->next) { - free_aval = 0; - k = list->word->word; v = list->next ? list->next->word->word : 0; @@ -577,24 +574,22 @@ assign_assoc_from_kvlist (var, nlist, h, flags) list = list->next; akey = expand_assignment_string_to_string (k, 0); - aval = expand_assignment_string_to_string (v, 0); - if (akey == 0 || *akey == 0) { err_badarraysub (k); FREE (akey); continue; } + + aval = expand_assignment_string_to_string (v, 0); if (aval == 0) { aval = (char *)xmalloc (1); aval[0] = '\0'; /* like do_assignment_internal */ - free_aval = 1; } bind_assoc_var_internal (var, h, akey, aval, flags); - if (free_aval) - free (aval); + free (aval); } } |