On Wed, 2012-03-14 at 10:31 +0100, Gergely Nagy wrote:
In the command-line parser code, when we encountered an error, we explicitly free'd the value-pairs structure, but did not return. A few lines later, we called vp_cmdline_parse_rekey_finish(), which also tried to free the same structure.
Instead, we should only call _rekey_finish() if we didn't NULL out the value pairs structure earlier.
Signed-off-by: Gergely Nagy <algernon@balabit.hu> --- lib/value-pairs.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/lib/value-pairs.c b/lib/value-pairs.c index 12cf831..912164f 100644 --- a/lib/value-pairs.c +++ b/lib/value-pairs.c @@ -678,7 +678,8 @@ value_pairs_new_from_cmdline (GlobalConfig *cfg, vp = NULL; } g_option_context_free (ctx); - vp_cmdline_parse_rekey_finish (user_data_args); + if (vp) + vp_cmdline_parse_rekey_finish (user_data_args);
Ops, I haven't noticed this patch, however I think my solution (just posted in the other thread) is somewhat better. You may have some data allocated by the parser, which wouldn't be freed in this case. Please have a look at my patch and comment if that's ok. Thanks. -- Bazsi