From 4c1687575907f35ca0de0a286366389e20a3e2b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mo=C5=84?= Date: Thu, 1 Apr 2021 17:46:05 +0200 Subject: [PATCH] protobuf: Fix leaking nodes and strings Closes #17305 --- epan/protobuf_lang_parser.lemon | 2 +- epan/protobuf_lang_tree.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/epan/protobuf_lang_parser.lemon b/epan/protobuf_lang_parser.lemon index 84cd55a3d5..7c1823b544 100644 --- a/epan/protobuf_lang_parser.lemon +++ b/epan/protobuf_lang_parser.lemon @@ -524,7 +524,7 @@ exIdent ::= PT_IDENT. strLit(A) ::= PT_STRLIT(B). { A = pbl_store_string_token(state, g_strndup(B->v + 1, strlen(B->v) - 2)); } /* support one string being splitted into multi-lines */ -strLit(A) ::= strLit(B) PT_STRLIT(C). { A = pbl_store_string_token(state, g_strconcat(B, g_strndup(C->v + 1, strlen(C->v) - 2), NULL)); } +strLit(A) ::= strLit(B) PT_STRLIT(C). { gchar *v = g_strndup(C->v + 1, strlen(C->v) - 2); A = pbl_store_string_token(state, g_strconcat(B, v, NULL)); g_free(v); } %code { diff --git a/epan/protobuf_lang_tree.c b/epan/protobuf_lang_tree.c index b269ad3439..bf6aa469a0 100644 --- a/epan/protobuf_lang_tree.c +++ b/epan/protobuf_lang_tree.c @@ -1172,6 +1172,7 @@ pbl_free_node(gpointer anode) if (node->children_by_name) { g_hash_table_destroy(node->children_by_name); } + g_free(node); } /*