Attached is the patch file, and an "output" from the LEAK_HUNTING=1 on the
real target system that actually doesn't have an MMU where the first leak
(ptr_to_globals) is fixed (but with potential problems for sigexit(), but
not the other one.
The first leak is straightforward, at the start of hush_main() it does
INIT_G() which does an xmalloc(), but there was never a corresponding free.
With an MMU, that's fine because everything disappears, but with NOMMU,
it's a problem. So I added the free(ptr_to_globals) to solve that. It is
inside the # if ENABLE_FEATURE_CLEANUP, and because it is always necessary
when there is no MMU, busybox should probably automatically set
ENABLE_FEATURE_CLEANUP if BB_MMU is 0.
Thanks for catching that sigexit() uses the globals. So it seems the thing
to do is to do instead is:
@@ -2054,6 +2114,9 @@
sigprocmask_allsigs(SIG_BLOCK);
tcsetpgrp(G_interactive_fd, G_saved_tty_pgrp);
}
+#if ENABLE_FEATURE_CLEAN_UP
+ free (ptr_to_globals);
+#endif
/* Not a signal, just exit */
if (sig <= 0)
@@ -2135,6 +2198,9 @@
#if ENABLE_HUSH_JOB
sigexit(- (exitcode & 0xff));
#else
+ #if ENABLE_FEATURE_CLEAN_UP
+ free (ptr_to_globals);
+ #endif
_exit(exitcode);
#endif
}
The other leak is difficult to explain "exactly". It mostly doesn't happen
on a system with a real MMU, but it happens reliably on my actual target
which has only 1 processor and no MMU. If you run the new hunt_leaktool.sh
on the attached "output.on_target.txt" it will show the leak. If you look
carefully at the output file, the free() is happening, but it is always 0,
so it doesn't free anything. The pointer to the lost memory is being
overwritten by some other task which somehow has the same space allocated
for its stack. I was able to prove that by using a JTAG remote gdb and
putting a hardware watchpoint on the location where the lost memory pointer
was stored. Unfortunately, the remote gdb has no way to understand the
source being debugged. I can say that it was something else inside busybox
that overwrote it, but because I use FDPIC (where busybox is a blessing vs
a curse for FLAT executables with no mmu), there is always only one copy of
busybox in memory, so It's pretty hard to figure out how that stack is
getting wiped out; it could be a bug in the linux kernel, the C libraries,
or the fdpic compiler but I would think it would cause a whole lot more
problems than that one leak if it was any of those, It does raise concern
for the subsequent lines of code
close(channel[1])
return chanel[2];
because those variables are also close by in the stack frame. However, both
before and after my patch I haven't seen any unexpected behavior of any
shell scripts (except the memory leaking in the before case) on my target
processor, nor any crashes or other bad behavior on that system.
On Sat, Aug 2, 2025 at 6:14 PM Denys Vlasenko <[email protected]>
wrote:
> On Fri, Aug 1, 2025 at 9:59 PM Harry Eaton <[email protected]> wrote:
> > cur_var = cur_var->next;
> > free(tmp);
> > }
> > + free(G.to_free);
> > + G.to_free = NULL;
> > + free(ptr_to_globals);
> > }
> > #endif
>
> fflush_all();
> #if ENABLE_HUSH_JOB
> sigexit(- (exitcode & 0xff));
> #else
>
> Use-after-free: sigexit() uses globals.
>
>
>
>
> > @@ -7657,9 +7663,6 @@
>
> > {
> > pid_t pid;
> > int channel[2];
> > -# if !BB_MMU
> > - char **to_free = NULL;
> > -# endif
> >
> > xpipe(channel);
> > pid = BB_MMU ? xfork() : xvfork();
> > @@ -7736,7 +7739,7 @@
> > * huge=`cat BIG` # was blocking here forever
> > * echo OK
> > */
> > - re_execute_shell(&to_free,
> > + re_execute_shell(&G.to_free,
> > s,
> > G.global_argv[0],
> > G.global_argv + 1,
> > @@ -7754,7 +7757,8 @@
> > # endif
> > enable_restore_tty_pgrp_on_exit();
> > # if !BB_MMU
> > - free(to_free);
> > + free(G.to_free);
> > + G.to_free = NULL;
>
> Can you explain how exactly this was leaking the allocation?
>
--- hush.c.orig 2025-07-28 17:57:34.808579711 -0400
+++ hush.c 2025-08-03 10:31:48.758244520 -0400
@@ -961,6 +961,9 @@
#if ENABLE_HUSH_GETOPTS
unsigned getopt_count;
#endif
+#if ENABLE_HUSH_TICK
+ char **to_free;
+#endif
const char *ifs;
char *ifs_whitespace; /* = G.ifs or malloced */
const char *cwd;
@@ -1343,36 +1346,154 @@
#endif
+static char **add_strings_to_strings(char **strings, char **add, int
need_to_dup)
+{
+ int i;
+ unsigned count1;
+ unsigned count2;
+ char **v;
+
+ v = strings;
+ count1 = 0;
+ if (v) {
+ while (*v) {
+ count1++;
+ v++;
+ }
+ }
+ count2 = 0;
+ v = add;
+ while (*v) {
+ count2++;
+ v++;
+ }
+ v = xrealloc(strings, (count1 + count2 + 1) * sizeof(char*));
+ v[count1 + count2] = NULL;
+ i = count2;
+ while (--i >= 0)
+ v[count1 + i] = (need_to_dup ? xstrdup(add[i]) : add[i]);
+ return v;
+}
+
+/* Note: takes ownership of "add" ptr (it is not strdup'ed) */
+static char **add_string_to_strings(char **strings, char *add)
+{
+ char *v[2];
+ v[0] = add;
+ v[1] = NULL;
+ return add_strings_to_strings(strings, v, /*dup:*/ 0);
+}
+
/* Leak hunting. Use hush_leaktool.sh for post-processing.
*/
+
#if LEAK_HUNTING
-static void *xxmalloc(int lineno, size_t size)
+static char **xxadd_strings_to_strings(int lineno, char **strings, char **add,
int need_to_dup)
+{
+ char **orig = strings;
+ char **ptr = add_strings_to_strings(strings, add, need_to_dup);
+ if (orig != ptr) {
+ fdprintf(2, "%p line %d: add_strings_to_strings\n", ptr,
lineno);
+ if (orig != NULL) fdprintf(2, "free %p by
add_strings_to_strings\n", orig);
+ fflush_all();
+ }
+ return ptr;
+}
+
+static char **xxadd_string_to_strings(int lineno, char **strings, char *add)
+{
+ char **orig = strings;
+ char **ptr = add_string_to_strings(strings, add);
+ if (ptr != orig) {
+ fdprintf(2, "%p line %d: add_string_to_strings\n", ptr, lineno);
+ if (orig != NULL) fdprintf(2, "free %p by
add_string_to_string\n", orig);;
+ fflush_all();
+ }
+ return ptr;
+}
+
+static void *xxmalloc(int lineno, const char *s, size_t size)
{
void *ptr = xmalloc((size + 0xff) & ~0xff);
- fdprintf(2, "line %d: malloc %p\n", lineno, ptr);
+ fdprintf(2, "%p line %d: malloc(%s)\n", ptr, lineno, s);
+ fflush_all();
+ return ptr;
+}
+static void *xxzalloc(int lineno, const char *s, size_t size)
+{
+ void *ptr = xzalloc((size + 0xff) & ~0xff);
+ fdprintf(2, "%p line %d: zalloc(%s)\n", ptr, lineno, s);
+ fflush_all();
return ptr;
}
-static void *xxrealloc(int lineno, void *ptr, size_t size)
+static void *xxrealloc(int lineno, const char *s, void *ptr, size_t size)
{
+ void *p = ptr;
ptr = xrealloc(ptr, (size + 0xff) & ~0xff);
- fdprintf(2, "line %d: realloc %p\n", lineno, ptr);
+ if (p != ptr) {
+ fdprintf(2, "%p line %d: realloc(%s)\n", ptr, lineno, s);
+ if (p != NULL) fdprintf(2, "free %p by realloc\n", p);
+ fflush_all();
+ }
+ return ptr;
+}
+static void *xxrealloc_getcwd_or_warn(int lineno, char *ptr)
+{
+ char *p = ptr;
+ ptr = xrealloc_getcwd_or_warn(ptr);
+ if (p != ptr) {
+ fdprintf(2, "%p line %d: xrealloc_getcwd_or_warn\n", ptr,
lineno);
+ if (p != NULL) fdprintf(2, "free %p by getcwd_or_warn\n", p);
+ fflush_all();
+ }
return ptr;
}
-static char *xxstrdup(int lineno, const char *str)
+static char *xxstrdup(int lineno, const char *s, const char *str)
{
char *ptr = xstrdup(str);
- fdprintf(2, "line %d: strdup %p\n", lineno, ptr);
+ fdprintf(2, "%p line %d: strdup(%s) %s\n", ptr, lineno, s, ptr);
+ fflush_all();
return ptr;
}
-static void xxfree(void *ptr)
+static char *xxstrndup(int lineno, const char *s, const char *str, int n)
{
- fdprintf(2, "free %p\n", ptr);
- free(ptr);
+ char *ptr = xstrndup(str, n);
+ fdprintf(2, "%p line %d: strndup(%s) %s\n", ptr, lineno, s, ptr);
+ fflush_all();
+ return ptr;
+}
+static char *xxasprintf(int lineno, const char *f, ...)
+{
+ int r;
+ char *p;
+ va_list args;
+ va_start(args, f);
+ r = vasprintf(&p, f, args);
+ va_end(args);
+ if (r < 0)
+ bb_die_memory_exhausted();
+ fdprintf(2, "%p line %d: xasprintf %s\n", p, lineno, p);
+ fflush_all();
+ return p;
+}
+static void xxfree(int lineno, const char *s, void *ptr)
+{
+ fdprintf(2, "free %p line %d (%s)\n", ptr, lineno, s);
+ fflush_all();
}
-# define xmalloc(s) xxmalloc(__LINE__, s)
-# define xrealloc(p, s) xxrealloc(__LINE__, p, s)
-# define xstrdup(s) xxstrdup(__LINE__, s)
-# define free(p) xxfree(p)
+#define STRINGIFY(x) #x
+#define add_strings_to_strings(strings, add, need_to_dup) \
+ xxadd_strings_to_strings(__LINE__, strings, add, need_to_dup)
+#define add_string_to_strings(strings, add) \
+ xxadd_string_to_strings(__LINE__, strings, add)
+# define xmalloc(s) xxmalloc(__LINE__, STRINGIFY(s), s)
+# define xzalloc(s) xxzalloc(__LINE__, STRINGIFY(s), s)
+# define xrealloc(p, s) xxrealloc(__LINE__, STRINGIFY(p), p, s )
+# define xstrdup(s) xxstrdup(__LINE__, STRINGIFY(s), s)
+# define xstrndup(s, n) xxstrndup(__LINE__, STRINGIFY(s), s, n)
+# define xrealloc_getcwd_or_warn(p) xxrealloc_getcwd_or_warn(__LINE__, p)
+# define xasprintf(f, ...) xxasprintf(__LINE__, f, __VA_ARGS__)
+# define free(p) xxfree(__LINE__, STRINGIFY(p), p)
#endif
@@ -1496,64 +1617,6 @@
return dst;
}
-static char **add_strings_to_strings(char **strings, char **add, int
need_to_dup)
-{
- int i;
- unsigned count1;
- unsigned count2;
- char **v;
-
- v = strings;
- count1 = 0;
- if (v) {
- while (*v) {
- count1++;
- v++;
- }
- }
- count2 = 0;
- v = add;
- while (*v) {
- count2++;
- v++;
- }
- v = xrealloc(strings, (count1 + count2 + 1) * sizeof(char*));
- v[count1 + count2] = NULL;
- i = count2;
- while (--i >= 0)
- v[count1 + i] = (need_to_dup ? xstrdup(add[i]) : add[i]);
- return v;
-}
-#if LEAK_HUNTING
-static char **xx_add_strings_to_strings(int lineno, char **strings, char
**add, int need_to_dup)
-{
- char **ptr = add_strings_to_strings(strings, add, need_to_dup);
- fdprintf(2, "line %d: add_strings_to_strings %p\n", lineno, ptr);
- return ptr;
-}
-#define add_strings_to_strings(strings, add, need_to_dup) \
- xx_add_strings_to_strings(__LINE__, strings, add, need_to_dup)
-#endif
-
-/* Note: takes ownership of "add" ptr (it is not strdup'ed) */
-static char **add_string_to_strings(char **strings, char *add)
-{
- char *v[2];
- v[0] = add;
- v[1] = NULL;
- return add_strings_to_strings(strings, v, /*dup:*/ 0);
-}
-#if LEAK_HUNTING
-static char **xx_add_string_to_strings(int lineno, char **strings, char *add)
-{
- char **ptr = add_string_to_strings(strings, add);
- fdprintf(2, "line %d: add_string_to_strings %p\n", lineno, ptr);
- return ptr;
-}
-#define add_string_to_strings(strings, add) \
- xx_add_string_to_strings(__LINE__, strings, add)
-#endif
-
static void free_strings(char **strings)
{
char **v;
@@ -2128,6 +2191,10 @@
cur_var = cur_var->next;
free(tmp);
}
+ free(G.HFILE_stdin);
+ free(G.to_free);
+ G.to_free = 0;
+ free(ptr_to_globals);
}
#endif
@@ -7658,7 +7725,7 @@
pid_t pid;
int channel[2];
# if !BB_MMU
- char **to_free = NULL;
+ G.to_free = NULL;
# endif
xpipe(channel);
@@ -7736,7 +7803,7 @@
* huge=`cat BIG` # was blocking here forever
* echo OK
*/
- re_execute_shell(&to_free,
+ re_execute_shell(&G.to_free,
s,
G.global_argv[0],
G.global_argv + 1,
@@ -7754,7 +7821,8 @@
# endif
enable_restore_tty_pgrp_on_exit();
# if !BB_MMU
- free(to_free);
+ free(G.to_free);
+ G.to_free = NULL;
# endif
close(channel[1]);
return channel[0];
0x56d008 line 10410: zalloc(sizeof((*ptr_to_globals)))
0x56d610 line 10445: zalloc(sizeof(*shell_ver))
0x569df8 line 10450: strdup(hush_version_str) HUSH_VERSION=1.37.0
0x56d718 line 10460: zalloc(sizeof(*cur_var))
0x56d820 line 10460: zalloc(sizeof(*cur_var))
0x56d928 line 10460: zalloc(sizeof(*cur_var))
0x56da30 line 10460: zalloc(sizeof(*cur_var))
0x56db38 line 10460: zalloc(sizeof(*cur_var))
0x56dc40 line 10460: zalloc(sizeof(*cur_var))
0x56dd48 line 2326: xrealloc_getcwd_or_warn
0x569e40 line 2574: xasprintf PWD=/var
free 0x569e40 line 2497 (str)
free null line 2553 (free_me)
0x569e40 line 2567: xasprintf HOSTNAME=(none)
0x56dd58 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x569e58 line 2567: xasprintf IFS=
0x56de60 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x561008 line 1701: malloc(sizeof(*fp))
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561720 line 5539: zalloc(1)
0x561828 line 3072: realloc(o->data)
free 0x561720 line 3059 (o->data)
free 0x561828 line 3065 (o->data)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561720 line 5539: zalloc(1)
0x561828 line 3072: realloc(o->data)
0x561930 line 4378: strdup(ctx->word.data) myVar=`echo -n ""
0x561950 line 4378: add_string_to_strings
0x561960 line 3880: zalloc(sizeof(struct pipe))
0x561a68 line 3918: realloc(pi->cmds)
free 0x561720 line 3059 (o->data)
free 0x561828 line 3065 (o->data)
0x561720 line 3311: realloc(o->data)
0x561828 line 7567: zalloc(sizeof(argv[0]) * cnt)
free null line 7827 (to_free)
0x7bd008 line 10410: zalloc(sizeof((*ptr_to_globals)))
0x7bd610 line 10445: zalloc(sizeof(*shell_ver))
0x7b9df8 line 10450: strdup(hush_version_str) HUSH_VERSION=1.37.0
0x7bd718 line 10460: zalloc(sizeof(*cur_var))
0x7bd820 line 10460: zalloc(sizeof(*cur_var))
0x7bd928 line 10460: zalloc(sizeof(*cur_var))
0x7bda30 line 10460: zalloc(sizeof(*cur_var))
0x7bdb38 line 10460: zalloc(sizeof(*cur_var))
0x7bdc40 line 10460: zalloc(sizeof(*cur_var))
0x7bdd48 line 2326: xrealloc_getcwd_or_warn
0x7b9e40 line 2574: xasprintf PWD=/var
free 0x7b9e40 line 2497 (str)
free null line 2553 (free_me)
0x7b9e40 line 2567: xasprintf HOSTNAME=(none)
0x7bdd58 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e58 line 2567: xasprintf IFS=
0x7bde60 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) HOSTNAME=(none)
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) IFS=
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x93c008 line 3880: zalloc(sizeof(struct pipe))
0x93c110 line 3918: realloc(pi->cmds)
0x93c218 line 5539: zalloc(1)
0x93c320 line 3072: realloc(o->data)
0x7b9e68 line 4378: strdup(ctx->word.data) echo
0x7b9e78 line 4378: add_string_to_strings
0x7b9e88 line 4378: strdup(ctx->word.data) -n
0x7b9e98 line 4378: add_string_to_strings
free 0x7b9e78 by add_string_to_string
0x7b9e78 line 4378: strdup(ctx->word.data)
free 0x93c218 line 3059 (o->data)
0x93c218 line 3880: zalloc(sizeof(struct pipe))
0x93c428 line 3918: realloc(pi->cmds)
free 0x93c320 line 3065 (o->data)
0x93c320 line 3311: realloc(o->data)
free 0x93c320 line 9701 (argv_expanded)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x7b9e68 line 1631 (*v)
free 0x7b9e88 line 1631 (*v)
free 0x7b9e78 line 1631 (*v)
free 0x7b9e98 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x93c110 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c008 line 3760 (pi)
free 0x93c428 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c218 line 3760 (pi)
0x93c008 line 3880: zalloc(sizeof(struct pipe))
0x93c110 line 3918: realloc(pi->cmds)
0x93c218 line 5539: zalloc(1)
free 0x93c218 line 3059 (o->data)
free 0x93c110 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c008 line 3760 (pi)
free null line 3065 (o->data)
free 0x7bdd48 line 2188 ((char*)(*ptr_to_globals).cwd)
free 0x7b9df8 line 2193 (cur_var->varstr)
free 0x7bd610 line 2195 (tmp)
free 0x7bd718 line 2195 (tmp)
free 0x7bd820 line 2195 (tmp)
free 0x7bd928 line 2195 (tmp)
free 0x7bda30 line 2195 (tmp)
free 0x7bdb38 line 2195 (tmp)
free 0x7bdc40 line 2195 (tmp)
free 0x7b9e40 line 2193 (cur_var->varstr)
free 0x7bdd58 line 2195 (tmp)
free 0x7b9e58 line 2193 (cur_var->varstr)
free 0x7bde60 line 2195 (tmp)
free 0x7bd008 line 2199 (ptr_to_globals)
free null line 3065 (o->data)
0x561b70 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561930 line 1631 (*v)
free 0x561950 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
free 0x561a68 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561960 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561a38 line 3072: realloc(o->data)
free 0x561930 line 3059 (o->data)
free 0x561a38 line 3065 (o->data)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561a38 line 3072: realloc(o->data)
0x561b40 line 4378: strdup(ctx->word.data) myVar=`echo -n ""
0x561c78 line 4378: add_string_to_strings
0x561c88 line 3880: zalloc(sizeof(struct pipe))
0x561d90 line 3918: realloc(pi->cmds)
free 0x561930 line 3059 (o->data)
free 0x561a38 line 3065 (o->data)
0x561930 line 3311: realloc(o->data)
0x561a38 line 7567: zalloc(sizeof(argv[0]) * cnt)
free null line 7827 (to_free)
0x7bd008 line 10410: zalloc(sizeof((*ptr_to_globals)))
0x7bd610 line 10445: zalloc(sizeof(*shell_ver))
0x7b9df8 line 10450: strdup(hush_version_str) HUSH_VERSION=1.37.0
0x7bd718 line 10460: zalloc(sizeof(*cur_var))
0x7bd820 line 10460: zalloc(sizeof(*cur_var))
0x7bd928 line 10460: zalloc(sizeof(*cur_var))
0x7bda30 line 10460: zalloc(sizeof(*cur_var))
0x7bdb38 line 10460: zalloc(sizeof(*cur_var))
0x7bdc40 line 10460: zalloc(sizeof(*cur_var))
0x7bdd48 line 2326: xrealloc_getcwd_or_warn
0x7b9e40 line 2574: xasprintf PWD=/var
free 0x7b9e40 line 2497 (str)
free null line 2553 (free_me)
0x7b9e40 line 2567: xasprintf HOSTNAME=(none)
0x7bdd58 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e58 line 2567: xasprintf IFS=
0x7bde60 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) HOSTNAME=(none)
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) IFS=
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) myVar=
0x93c008 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x93c110 line 3880: zalloc(sizeof(struct pipe))
0x93c218 line 3918: realloc(pi->cmds)
0x93c320 line 5539: zalloc(1)
0x93c428 line 3072: realloc(o->data)
0x7b9e78 line 4378: strdup(ctx->word.data) echo
0x7b9e88 line 4378: add_string_to_strings
0x7b9e98 line 4378: strdup(ctx->word.data) -n
0x7b9ea8 line 4378: add_string_to_strings
free 0x7b9e88 by add_string_to_string
0x7b9e88 line 4378: strdup(ctx->word.data)
free 0x93c320 line 3059 (o->data)
0x93c320 line 3880: zalloc(sizeof(struct pipe))
0x93c530 line 3918: realloc(pi->cmds)
free 0x93c428 line 3065 (o->data)
0x93c428 line 3311: realloc(o->data)
free 0x93c428 line 9701 (argv_expanded)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x7b9e78 line 1631 (*v)
free 0x7b9e98 line 1631 (*v)
free 0x7b9e88 line 1631 (*v)
free 0x7b9ea8 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x93c218 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c110 line 3760 (pi)
free 0x93c530 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c320 line 3760 (pi)
0x93c110 line 3880: zalloc(sizeof(struct pipe))
0x93c218 line 3918: realloc(pi->cmds)
0x93c320 line 5539: zalloc(1)
free 0x93c320 line 3059 (o->data)
free 0x93c218 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c110 line 3760 (pi)
free null line 3065 (o->data)
free 0x7bdd48 line 2188 ((char*)(*ptr_to_globals).cwd)
free 0x7b9df8 line 2193 (cur_var->varstr)
free 0x7bd610 line 2195 (tmp)
free 0x7bd718 line 2195 (tmp)
free 0x7bd820 line 2195 (tmp)
free 0x7bd928 line 2195 (tmp)
free 0x7bda30 line 2195 (tmp)
free 0x7bdb38 line 2195 (tmp)
free 0x7bdc40 line 2195 (tmp)
free 0x7b9e40 line 2193 (cur_var->varstr)
free 0x7bdd58 line 2195 (tmp)
free 0x7b9e58 line 2193 (cur_var->varstr)
free 0x7bde60 line 2195 (tmp)
free 0x7b9e68 line 2193 (cur_var->varstr)
free 0x93c008 line 2195 (tmp)
free 0x7bd008 line 2199 (ptr_to_globals)
free null line 3065 (o->data)
free 0x561930 line 2497 (str)
free null line 2553 (free_me)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561b40 line 1631 (*v)
free 0x561c78 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
free 0x561d90 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561c88 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561c78 line 3072: realloc(o->data)
free 0x561930 line 3059 (o->data)
free 0x561c78 line 3065 (o->data)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561c78 line 3072: realloc(o->data)
0x561b40 line 4378: strdup(ctx->word.data) myVar=`echo -n ""
0x561d80 line 4378: add_string_to_strings
0x561d90 line 3880: zalloc(sizeof(struct pipe))
0x561e98 line 3918: realloc(pi->cmds)
free 0x561930 line 3059 (o->data)
free 0x561c78 line 3065 (o->data)
0x561930 line 3311: realloc(o->data)
0x561c78 line 7567: zalloc(sizeof(argv[0]) * cnt)
free null line 7827 (to_free)
0x7bd008 line 10410: zalloc(sizeof((*ptr_to_globals)))
0x7bd610 line 10445: zalloc(sizeof(*shell_ver))
0x7b9df8 line 10450: strdup(hush_version_str) HUSH_VERSION=1.37.0
0x7bd718 line 10460: zalloc(sizeof(*cur_var))
0x7bd820 line 10460: zalloc(sizeof(*cur_var))
0x7bd928 line 10460: zalloc(sizeof(*cur_var))
0x7bda30 line 10460: zalloc(sizeof(*cur_var))
0x7bdb38 line 10460: zalloc(sizeof(*cur_var))
0x7bdc40 line 10460: zalloc(sizeof(*cur_var))
0x7bdd48 line 2326: xrealloc_getcwd_or_warn
0x7b9e40 line 2574: xasprintf PWD=/var
free 0x7b9e40 line 2497 (str)
free null line 2553 (free_me)
0x7b9e40 line 2567: xasprintf HOSTNAME=(none)
0x7bdd58 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e58 line 2567: xasprintf IFS=
0x7bde60 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) HOSTNAME=(none)
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) IFS=
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) myVar=
0x93c008 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x93c110 line 3880: zalloc(sizeof(struct pipe))
0x93c218 line 3918: realloc(pi->cmds)
0x93c320 line 5539: zalloc(1)
0x93c428 line 3072: realloc(o->data)
0x7b9e78 line 4378: strdup(ctx->word.data) echo
0x7b9e88 line 4378: add_string_to_strings
0x7b9e98 line 4378: strdup(ctx->word.data) -n
0x7b9ea8 line 4378: add_string_to_strings
free 0x7b9e88 by add_string_to_string
0x7b9e88 line 4378: strdup(ctx->word.data)
free 0x93c320 line 3059 (o->data)
0x93c320 line 3880: zalloc(sizeof(struct pipe))
0x93c530 line 3918: realloc(pi->cmds)
free 0x93c428 line 3065 (o->data)
0x93c428 line 3311: realloc(o->data)
free 0x93c428 line 9701 (argv_expanded)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x7b9e78 line 1631 (*v)
free 0x7b9e98 line 1631 (*v)
free 0x7b9e88 line 1631 (*v)
free 0x7b9ea8 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x93c218 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c110 line 3760 (pi)
free 0x93c530 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c320 line 3760 (pi)
0x93c110 line 3880: zalloc(sizeof(struct pipe))
0x93c218 line 3918: realloc(pi->cmds)
0x93c320 line 5539: zalloc(1)
free 0x93c320 line 3059 (o->data)
free 0x93c218 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c110 line 3760 (pi)
free null line 3065 (o->data)
free 0x7bdd48 line 2188 ((char*)(*ptr_to_globals).cwd)
free 0x7b9df8 line 2193 (cur_var->varstr)
free 0x7bd610 line 2195 (tmp)
free 0x7bd718 line 2195 (tmp)
free 0x7bd820 line 2195 (tmp)
free 0x7bd928 line 2195 (tmp)
free 0x7bda30 line 2195 (tmp)
free 0x7bdb38 line 2195 (tmp)
free 0x7bdc40 line 2195 (tmp)
free 0x7b9e40 line 2193 (cur_var->varstr)
free 0x7bdd58 line 2195 (tmp)
free 0x7b9e58 line 2193 (cur_var->varstr)
free 0x7bde60 line 2195 (tmp)
free 0x7b9e68 line 2193 (cur_var->varstr)
free 0x93c008 line 2195 (tmp)
free 0x7bd008 line 2199 (ptr_to_globals)
free null line 3065 (o->data)
free 0x561930 line 2497 (str)
free null line 2553 (free_me)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561b40 line 1631 (*v)
free 0x561d80 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
free 0x561e98 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561d90 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561d80 line 3072: realloc(o->data)
free 0x561930 line 3059 (o->data)
free 0x561d80 line 3065 (o->data)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561d80 line 3072: realloc(o->data)
0x561b40 line 4378: strdup(ctx->word.data) echo
0x561e88 line 4378: add_string_to_strings
0x561e98 line 4378: strdup(ctx->word.data) this is echo
0x561eb0 line 4378: add_string_to_strings
free 0x561e88 by add_string_to_string
0x561ec8 line 3880: zalloc(sizeof(struct pipe))
0x561fd0 line 3918: realloc(pi->cmds)
free 0x561930 line 3059 (o->data)
free 0x561d80 line 3065 (o->data)
0x561930 line 3311: realloc(o->data)
free 0x561930 line 9701 (argv_expanded)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561b40 line 1631 (*v)
free 0x561e98 line 1631 (*v)
free 0x561eb0 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
free 0x561fd0 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561ec8 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561d80 line 3072: realloc(o->data)
0x561b40 line 4378: strdup(ctx->word.data) myVar=`echo -n ""
0x561e88 line 4378: add_string_to_strings
0x561e98 line 3880: zalloc(sizeof(struct pipe))
0x561fa0 line 3918: realloc(pi->cmds)
free 0x561930 line 3059 (o->data)
free 0x561d80 line 3065 (o->data)
0x561930 line 3311: realloc(o->data)
0x561d80 line 7567: zalloc(sizeof(argv[0]) * cnt)
free null line 7827 (to_free)
0x7bd008 line 10410: zalloc(sizeof((*ptr_to_globals)))
0x7bd610 line 10445: zalloc(sizeof(*shell_ver))
0x7b9df8 line 10450: strdup(hush_version_str) HUSH_VERSION=1.37.0
0x7bd718 line 10460: zalloc(sizeof(*cur_var))
0x7bd820 line 10460: zalloc(sizeof(*cur_var))
0x7bd928 line 10460: zalloc(sizeof(*cur_var))
0x7bda30 line 10460: zalloc(sizeof(*cur_var))
0x7bdb38 line 10460: zalloc(sizeof(*cur_var))
0x7bdc40 line 10460: zalloc(sizeof(*cur_var))
0x7bdd48 line 2326: xrealloc_getcwd_or_warn
0x7b9e40 line 2574: xasprintf PWD=/var
free 0x7b9e40 line 2497 (str)
free null line 2553 (free_me)
0x7b9e40 line 2567: xasprintf HOSTNAME=(none)
0x7bdd58 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e58 line 2567: xasprintf IFS=
0x7bde60 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) HOSTNAME=(none)
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) IFS=
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) myVar=
0x93c008 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x93c110 line 3880: zalloc(sizeof(struct pipe))
0x93c218 line 3918: realloc(pi->cmds)
0x93c320 line 5539: zalloc(1)
0x93c428 line 3072: realloc(o->data)
0x7b9e78 line 4378: strdup(ctx->word.data) echo
0x7b9e88 line 4378: add_string_to_strings
0x7b9e98 line 4378: strdup(ctx->word.data) -n
0x7b9ea8 line 4378: add_string_to_strings
free 0x7b9e88 by add_string_to_string
0x7b9e88 line 4378: strdup(ctx->word.data)
free 0x93c320 line 3059 (o->data)
0x93c320 line 3880: zalloc(sizeof(struct pipe))
0x93c530 line 3918: realloc(pi->cmds)
free 0x93c428 line 3065 (o->data)
0x93c428 line 3311: realloc(o->data)
free 0x93c428 line 9701 (argv_expanded)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x7b9e78 line 1631 (*v)
free 0x7b9e98 line 1631 (*v)
free 0x7b9e88 line 1631 (*v)
free 0x7b9ea8 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x93c218 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c110 line 3760 (pi)
free 0x93c530 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c320 line 3760 (pi)
0x93c110 line 3880: zalloc(sizeof(struct pipe))
0x93c218 line 3918: realloc(pi->cmds)
0x93c320 line 5539: zalloc(1)
free 0x93c320 line 3059 (o->data)
free 0x93c218 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c110 line 3760 (pi)
free null line 3065 (o->data)
free 0x7bdd48 line 2188 ((char*)(*ptr_to_globals).cwd)
free 0x7b9df8 line 2193 (cur_var->varstr)
free 0x7bd610 line 2195 (tmp)
free 0x7bd718 line 2195 (tmp)
free 0x7bd820 line 2195 (tmp)
free 0x7bd928 line 2195 (tmp)
free 0x7bda30 line 2195 (tmp)
free 0x7bdb38 line 2195 (tmp)
free 0x7bdc40 line 2195 (tmp)
free 0x7b9e40 line 2193 (cur_var->varstr)
free 0x7bdd58 line 2195 (tmp)
free 0x7b9e58 line 2193 (cur_var->varstr)
free 0x7bde60 line 2195 (tmp)
free 0x7b9e68 line 2193 (cur_var->varstr)
free 0x93c008 line 2195 (tmp)
free 0x7bd008 line 2199 (ptr_to_globals)
free null line 3065 (o->data)
free 0x561930 line 2497 (str)
free null line 2553 (free_me)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561b40 line 1631 (*v)
free 0x561e88 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
free 0x561fa0 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561e98 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561e88 line 3072: realloc(o->data)
free 0x561930 line 3059 (o->data)
free 0x561e88 line 3065 (o->data)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561e88 line 3072: realloc(o->data)
0x561b40 line 4378: strdup(ctx->word.data) myVar=`echo -n ""
0x561f90 line 4378: add_string_to_strings
0x561fa0 line 3880: zalloc(sizeof(struct pipe))
0x5620a8 line 3918: realloc(pi->cmds)
free 0x561930 line 3059 (o->data)
free 0x561e88 line 3065 (o->data)
0x561930 line 3311: realloc(o->data)
0x561e88 line 7567: zalloc(sizeof(argv[0]) * cnt)
free null line 7827 (to_free)
0x7bd008 line 10410: zalloc(sizeof((*ptr_to_globals)))
0x7bd610 line 10445: zalloc(sizeof(*shell_ver))
0x7b9df8 line 10450: strdup(hush_version_str) HUSH_VERSION=1.37.0
0x7bd718 line 10460: zalloc(sizeof(*cur_var))
0x7bd820 line 10460: zalloc(sizeof(*cur_var))
0x7bd928 line 10460: zalloc(sizeof(*cur_var))
0x7bda30 line 10460: zalloc(sizeof(*cur_var))
0x7bdb38 line 10460: zalloc(sizeof(*cur_var))
0x7bdc40 line 10460: zalloc(sizeof(*cur_var))
0x7bdd48 line 2326: xrealloc_getcwd_or_warn
0x7b9e40 line 2574: xasprintf PWD=/var
free 0x7b9e40 line 2497 (str)
free null line 2553 (free_me)
0x7b9e40 line 2567: xasprintf HOSTNAME=(none)
0x7bdd58 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e58 line 2567: xasprintf IFS=
0x7bde60 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) HOSTNAME=(none)
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) IFS=
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) myVar=
0x93c008 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x93c110 line 3880: zalloc(sizeof(struct pipe))
0x93c218 line 3918: realloc(pi->cmds)
0x93c320 line 5539: zalloc(1)
0x93c428 line 3072: realloc(o->data)
0x7b9e78 line 4378: strdup(ctx->word.data) echo
0x7b9e88 line 4378: add_string_to_strings
0x7b9e98 line 4378: strdup(ctx->word.data) -n
0x7b9ea8 line 4378: add_string_to_strings
free 0x7b9e88 by add_string_to_string
0x7b9e88 line 4378: strdup(ctx->word.data)
free 0x93c320 line 3059 (o->data)
0x93c320 line 3880: zalloc(sizeof(struct pipe))
0x93c530 line 3918: realloc(pi->cmds)
free 0x93c428 line 3065 (o->data)
0x93c428 line 3311: realloc(o->data)
free 0x93c428 line 9701 (argv_expanded)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x7b9e78 line 1631 (*v)
free 0x7b9e98 line 1631 (*v)
free 0x7b9e88 line 1631 (*v)
free 0x7b9ea8 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x93c218 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c110 line 3760 (pi)
free 0x93c530 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c320 line 3760 (pi)
0x93c110 line 3880: zalloc(sizeof(struct pipe))
0x93c218 line 3918: realloc(pi->cmds)
0x93c320 line 5539: zalloc(1)
free 0x93c320 line 3059 (o->data)
free 0x93c218 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c110 line 3760 (pi)
free null line 3065 (o->data)
free 0x7bdd48 line 2188 ((char*)(*ptr_to_globals).cwd)
free 0x7b9df8 line 2193 (cur_var->varstr)
free 0x7bd610 line 2195 (tmp)
free 0x7bd718 line 2195 (tmp)
free 0x7bd820 line 2195 (tmp)
free 0x7bd928 line 2195 (tmp)
free 0x7bda30 line 2195 (tmp)
free 0x7bdb38 line 2195 (tmp)
free 0x7bdc40 line 2195 (tmp)
free 0x7b9e40 line 2193 (cur_var->varstr)
free 0x7bdd58 line 2195 (tmp)
free 0x7b9e58 line 2193 (cur_var->varstr)
free 0x7bde60 line 2195 (tmp)
free 0x7b9e68 line 2193 (cur_var->varstr)
free 0x93c008 line 2195 (tmp)
free 0x7bd008 line 2199 (ptr_to_globals)
free null line 3065 (o->data)
free 0x561930 line 2497 (str)
free null line 2553 (free_me)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561b40 line 1631 (*v)
free 0x561f90 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
free 0x5620a8 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561fa0 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561f90 line 3072: realloc(o->data)
free 0x561930 line 3059 (o->data)
free 0x561f90 line 3065 (o->data)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x561f90 line 3072: realloc(o->data)
0x561b40 line 4378: strdup(ctx->word.data) myVar=`echo -n ""
0x562098 line 4378: add_string_to_strings
0x5620a8 line 3880: zalloc(sizeof(struct pipe))
0x5621b0 line 3918: realloc(pi->cmds)
free 0x561930 line 3059 (o->data)
free 0x561f90 line 3065 (o->data)
0x561930 line 3311: realloc(o->data)
0x561f90 line 7567: zalloc(sizeof(argv[0]) * cnt)
free null line 7827 (to_free)
0x7bd008 line 10410: zalloc(sizeof((*ptr_to_globals)))
0x7bd610 line 10445: zalloc(sizeof(*shell_ver))
0x7b9df8 line 10450: strdup(hush_version_str) HUSH_VERSION=1.37.0
0x7bd718 line 10460: zalloc(sizeof(*cur_var))
0x7bd820 line 10460: zalloc(sizeof(*cur_var))
0x7bd928 line 10460: zalloc(sizeof(*cur_var))
0x7bda30 line 10460: zalloc(sizeof(*cur_var))
0x7bdb38 line 10460: zalloc(sizeof(*cur_var))
0x7bdc40 line 10460: zalloc(sizeof(*cur_var))
0x7bdd48 line 2326: xrealloc_getcwd_or_warn
0x7b9e40 line 2574: xasprintf PWD=/var
free 0x7b9e40 line 2497 (str)
free null line 2553 (free_me)
0x7b9e40 line 2567: xasprintf HOSTNAME=(none)
0x7bdd58 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e58 line 2567: xasprintf IFS=
0x7bde60 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) HOSTNAME=(none)
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) IFS=
free 0x7b9e68 line 2497 (str)
free null line 2553 (free_me)
0x7b9e68 line 10652: strdup(optarg) myVar=
0x93c008 line 2525: zalloc(sizeof(*cur))
free null line 2553 (free_me)
0x93c110 line 3880: zalloc(sizeof(struct pipe))
0x93c218 line 3918: realloc(pi->cmds)
0x93c320 line 5539: zalloc(1)
0x93c428 line 3072: realloc(o->data)
0x7b9e78 line 4378: strdup(ctx->word.data) echo
0x7b9e88 line 4378: add_string_to_strings
0x7b9e98 line 4378: strdup(ctx->word.data) -n
0x7b9ea8 line 4378: add_string_to_strings
free 0x7b9e88 by add_string_to_string
0x7b9e88 line 4378: strdup(ctx->word.data)
free 0x93c320 line 3059 (o->data)
0x93c320 line 3880: zalloc(sizeof(struct pipe))
0x93c530 line 3918: realloc(pi->cmds)
free 0x93c428 line 3065 (o->data)
0x93c428 line 3311: realloc(o->data)
free 0x93c428 line 9701 (argv_expanded)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x7b9e78 line 1631 (*v)
free 0x7b9e98 line 1631 (*v)
free 0x7b9e88 line 1631 (*v)
free 0x7b9ea8 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x93c218 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c110 line 3760 (pi)
free 0x93c530 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c320 line 3760 (pi)
0x93c110 line 3880: zalloc(sizeof(struct pipe))
0x93c218 line 3918: realloc(pi->cmds)
0x93c320 line 5539: zalloc(1)
free 0x93c320 line 3059 (o->data)
free 0x93c218 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x93c110 line 3760 (pi)
free null line 3065 (o->data)
free 0x7bdd48 line 2188 ((char*)(*ptr_to_globals).cwd)
free 0x7b9df8 line 2193 (cur_var->varstr)
free 0x7bd610 line 2195 (tmp)
free 0x7bd718 line 2195 (tmp)
free 0x7bd820 line 2195 (tmp)
free 0x7bd928 line 2195 (tmp)
free 0x7bda30 line 2195 (tmp)
free 0x7bdb38 line 2195 (tmp)
free 0x7bdc40 line 2195 (tmp)
free 0x7b9e40 line 2193 (cur_var->varstr)
free 0x7bdd58 line 2195 (tmp)
free 0x7b9e58 line 2193 (cur_var->varstr)
free 0x7bde60 line 2195 (tmp)
free 0x7b9e68 line 2193 (cur_var->varstr)
free 0x93c008 line 2195 (tmp)
free 0x7bd008 line 2199 (ptr_to_globals)
free null line 3065 (o->data)
free 0x561930 line 2497 (str)
free null line 2553 (free_me)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561b40 line 1631 (*v)
free 0x562098 line 1634 (strings)
free null line 3734 (command->group_as_string)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
free 0x5621b0 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x5620a8 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x562098 line 3072: realloc(o->data)
free 0x561930 line 3059 (o->data)
free 0x562098 line 3065 (o->data)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
0x562098 line 3072: realloc(o->data)
free 0x561930 line 3059 (o->data)
free 0x562098 line 3065 (o->data)
free null line 10232 (for_list)
free null line 10235 (case_word)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
0x561510 line 3880: zalloc(sizeof(struct pipe))
0x561618 line 3918: realloc(pi->cmds)
0x561930 line 5539: zalloc(1)
free 0x561930 line 3059 (o->data)
free 0x561618 line 3752 (pi->cmds)
free null line 3755 (pi->cmdtext)
free 0x561510 line 3760 (pi)
free null line 3065 (o->data)
free 0x561008 line 1723 (fp)
free 0x56dd48 line 2188 ((char*)(*ptr_to_globals).cwd)
free 0x569df8 line 2193 (cur_var->varstr)
free 0x56d610 line 2195 (tmp)
free 0x56d718 line 2195 (tmp)
free 0x56d820 line 2195 (tmp)
free 0x56d928 line 2195 (tmp)
free 0x56da30 line 2195 (tmp)
free 0x56db38 line 2195 (tmp)
free 0x56dc40 line 2195 (tmp)
free 0x569e40 line 2193 (cur_var->varstr)
free 0x56dd58 line 2195 (tmp)
free 0x569e58 line 2193 (cur_var->varstr)
free 0x56de60 line 2195 (tmp)
free 0x561720 line 2193 (cur_var->varstr)
free 0x561b70 line 2195 (tmp)
free 0x56d008 line 2199 (ptr_to_globals)
_______________________________________________
busybox mailing list
[email protected]
https://lists.busybox.net/mailman/listinfo/busybox