recipes: db/*: Upgraded
[dragora.git] / patches / bash / bash51-005
blobdee89561de018eff6a954812e2e2140058878a12
1                              BASH PATCH REPORT
2                              =================
4 Bash-Release:   5.1
5 Patch-ID:       bash51-005
7 Bug-Reported-by:        Alexander Mescheryakov <alexander.s.m@gmail.com>,
8                         konsolebox <konsolebox@gmail.com>   
9 Bug-Reference-ID:       <5ffd7f3d.1c69fb81.dee25.166c@mx.google.com>,
10                         <CAJnmqwaVs7M6NBqZzcHy5c2+yHkTEg7p+o8ZWuA7sN+6N1q4CA@mail.gmail.com>
11 Bug-Reference-URL:      https://lists.gnu.org/archive/html/bug-bash/2021-01/msg00082.html,
12                         https://lists.gnu.org/archive/html/bug-bash/2021-04/msg00160.html
14 Bug-Description:
16 Fix two memory leaks when assigning arrays using compound assignment syntax.
18 Patch (apply with `patch -p0'):
20 *** ../bash-5.1-patched/subst.c 2020-12-16 17:01:32.000000000 -0500
21 --- subst.c     2021-01-24 17:48:40.000000000 -0500
22 ***************
23 *** 11674,11677 ****
24 --- 11674,11679 ----
25   
26     value = string_list (l);
27 +   dispose_words (l);
28
29     wlen = STRLEN (value);
30   
31 *** ../bash-5.1-patched/arrayfunc.c     2020-12-16 17:01:32.000000000 -0500
32 --- arrayfunc.c 2021-04-19 16:43:09.000000000 -0400
33 ***************
34 *** 565,574 ****
35     WORD_LIST *list;
36     char *akey, *aval, *k, *v;
37 -   int free_aval;
38   
39     for (list = nlist; list; list = list->next)
40       {
41 -       free_aval = 0;
42
43         k = list->word->word;
44         v = list->next ? list->next->word->word : 0;
45 --- 565,571 ----
46 ***************
47 *** 578,583 ****
48   
49         akey = expand_assignment_string_to_string (k, 0);
50 -       aval = expand_assignment_string_to_string (v, 0);
51
52         if (akey == 0 || *akey == 0)
53         {
54 --- 575,578 ----
55 ***************
56 *** 586,599 ****
57           continue;
58         }             
59         if (aval == 0)
60         {
61           aval = (char *)xmalloc (1);
62           aval[0] = '\0';       /* like do_assignment_internal */
63 -         free_aval = 1;
64         }
65   
66         bind_assoc_var_internal (var, h, akey, aval, flags);
67 !       if (free_aval)
68 !       free (aval);
69       }
70   }
71 --- 581,594 ----
72           continue;
73         }             
74
75 +       aval = expand_assignment_string_to_string (v, 0);
76         if (aval == 0)
77         {
78           aval = (char *)xmalloc (1);
79           aval[0] = '\0';       /* like do_assignment_internal */
80         }
81   
82         bind_assoc_var_internal (var, h, akey, aval, flags);
83 !       free (aval);
84       }
85   }
86 *** ../bash-5.1/patchlevel.h    2020-06-22 14:51:03.000000000 -0400
87 --- patchlevel.h        2020-10-01 11:01:28.000000000 -0400
88 ***************
89 *** 26,30 ****
90      looks for to find the patch level (for the sccs version string). */
91   
92 ! #define PATCHLEVEL 4
93   
94   #endif /* _PATCHLEVEL_H_ */
95 --- 26,30 ----
96      looks for to find the patch level (for the sccs version string). */
97   
98 ! #define PATCHLEVEL 5
99   
100   #endif /* _PATCHLEVEL_H_ */