diff options
author | Simon Marchi <simon.marchi@ericsson.com> | 2017-06-06 14:52:31 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2017-06-06 14:52:31 +0100 |
commit | d24b756188bd63a422671a73e31af718007264ca (patch) | |
tree | 6038ed2215bccd7d1b76ccd566817d559632d7ce /binutils/sysinfo.y | |
parent | 0ee3a6dbd06b88a4e02f3f46c3ec036fd951400b (diff) | |
download | gdb-d24b756188bd63a422671a73e31af718007264ca.zip gdb-d24b756188bd63a422671a73e31af718007264ca.tar.gz gdb-d24b756188bd63a422671a73e31af718007264ca.tar.bz2 |
Fix memory leaks in the sysinfo program.
* sysinfo.y: Free memory allocated by token NAME.
Diffstat (limited to 'binutils/sysinfo.y')
-rw-r--r-- | binutils/sysinfo.y | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/binutils/sysinfo.y b/binutils/sysinfo.y index 62758de..1c8f1ff2 100644 --- a/binutils/sysinfo.y +++ b/binutils/sysinfo.y @@ -21,6 +21,7 @@ %{ #include <stdio.h> #include <stdlib.h> +#include <string.h> static char writecode; static char *it; @@ -159,6 +160,8 @@ it: case 'c': printf("}\n"); } + + free (it); } ; @@ -204,6 +207,8 @@ repeat_it_field: '(' REPEAT NAME it_field_list ')' { + free (repeat); + repeat = oldrepeat; oldrepeat =0; rdepth--; @@ -230,6 +235,8 @@ cond_it_field: '(' COND NAME printf("\tif (%s) {\n", $3); break; } + + free ($3); } it_field_list ')' @@ -348,6 +355,9 @@ char *ptr = pnames[rdepth]; else abort(); break; } + + free (desc); + free (id); } ; @@ -371,7 +381,7 @@ attr_size: attr_id: '(' NAME ')' { $$ = $2; } - | { $$ = "dummy";} + | { $$ = strdup ("dummy");} ; enums: @@ -388,6 +398,9 @@ enum_list: case 'c': printf("if (ptr->%s%s == %s) { tabout(); printf(\"%s\\n\");}\n", name, names[rdepth],$4,$3); } + + free ($3); + free ($4); } ; |