]> git.pld-linux.org Git - packages/gdb.git/blob - gdb-stap-double-free.patch
- updated (performance fixes).
[packages/gdb.git] / gdb-stap-double-free.patch
1 --- a/gdb/stap-probe.c
2 +++ b/gdb/stap-probe.c
3 @@ -355,9 +355,7 @@ stap_free_args_info (void *args_info_ptr)
4    int i;
5  
6    for (i = 0; i < a->n_args; i++)
7 -    {
8 -      xfree (a->arg[i].arg_str);
9 -    }
10 +    xfree (a->arg[i].arg_str);
11  
12    xfree (a->arg);
13    xfree (a);
14 @@ -401,6 +399,7 @@ stap_parse_probe_arguments (struct stap_probe *probe)
15      return;
16  
17    args_info = xmalloc (sizeof (struct stap_args_info));
18 +  args_info->n_args = 0;
19    back_to = make_cleanup (stap_free_args_info, args_info);
20    args_info->arg = xcalloc (STAP_MAX_ARGS, sizeof (struct stap_probe_arg));
21  
22 @@ -493,6 +492,7 @@ stap_parse_probe_arguments (struct stap_probe *probe)
23  
24               args_info->arg[current_arg].arg_str
25                 = savestring (start, cur - start);
26 +             ++args_info->n_args;
27               /* Start it over again.  */
28               cur = skip_spaces ((char *) cur);
29               current_state = NEW_ARG;
30 @@ -513,7 +513,6 @@ stap_parse_probe_arguments (struct stap_probe *probe)
31         }
32      }
33  
34 -  args_info->n_args = current_arg + 1;
35    args_info->arg = xrealloc (args_info->arg,
36                               args_info->n_args
37                               * sizeof (struct stap_probe_arg));
38 @@ -1526,8 +1525,9 @@ stap_free_parsed_args (struct stap_args_info *parsed_args)
39      return;
40  
41    for (i = 0; i < parsed_args->n_args; i++)
42 -    xfree (parsed_args->arg);
43 +    xfree (parsed_args->arg[i].arg_str);
44  
45 +  xfree (parsed_args->arg);
46    xfree (parsed_args);
47  }
48  
49 @@ -1859,7 +1859,7 @@ parse_stap_probe (char **argptr, struct linespec_result *canonical)
50         if (canonical)
51           {
52             canonical->canonical = xrealloc (canonical->canonical,
53 -                                            result.nelts * sizeof (char **));
54 +                                            result.nelts * sizeof (char *));
55             canonical->canonical[result.nelts - 1] = xstrdup (full_arg);
56           }
57        }
This page took 0.031924 seconds and 3 git commands to generate.