From a2cab3b088a29b885e33b923edb062badfb92346 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Petr=20=C5=A0tetiar?= Date: Tue, 5 Nov 2019 00:43:46 +0100 Subject: [PATCH] ucimap: fix possible use of memory after it is freed MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit scan-build from clang version 9 has reported following issue: ucimap.c:710:8: warning: Use of memory after it is freed err = ucimap_parse_options(map, sm, sd, s); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Petr Å tetiar --- ucimap.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ucimap.c b/ucimap.c index d5fd5c4..7c2b043 100644 --- a/ucimap.c +++ b/ucimap.c @@ -490,16 +490,21 @@ ucimap_add_section_list(struct uci_map *map, struct ucimap_section_data *sd) map->sdata_tail = &sd->next; } -static void +static int ucimap_add_section(struct ucimap_section_data *sd) { + int r; struct uci_map *map = sd->map; sd->next = NULL; - if (sd->sm->add(map, ucimap_section_ptr(sd)) < 0) + r = sd->sm->add(map, ucimap_section_ptr(sd)); + if (r < 0) { ucimap_free_section(map, sd); - else + return r; + } else ucimap_add_section_list(map, sd); + + return 0; } #ifdef UCI_DEBUG @@ -702,7 +707,9 @@ ucimap_parse_section(struct uci_map *map, struct uci_sectionmap *sm, struct ucim goto error; if (map->parsed) { - ucimap_add_section(sd); + err = ucimap_add_section(sd); + if (err) + return err; } else { ucimap_add_section_list(map, sd); } -- 2.30.2