From cee40c33d5a00405745dae30c80de06853518ddd Mon Sep 17 00:00:00 2001 From: Jb Evain Date: Fri, 7 Jun 2024 18:52:12 -0700 Subject: [PATCH 1/5] Free the result of g_strsplit in debugger_agent_parse_options --- src/mono/mono/component/debugger-agent.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mono/mono/component/debugger-agent.c b/src/mono/mono/component/debugger-agent.c index 81ea280734fdf..088a8545d6df0 100644 --- a/src/mono/mono/component/debugger-agent.c +++ b/src/mono/mono/component/debugger-agent.c @@ -672,6 +672,7 @@ debugger_agent_parse_options (char *options) exit (1); } } + g_strfreev (args); if (agent_config.server && !agent_config.suspend) { /* Waiting for deferred attachment */ From f4fa699723e9d709c6c60476229f2f63952edbcb Mon Sep 17 00:00:00 2001 From: Jb Evain Date: Fri, 7 Jun 2024 18:53:12 -0700 Subject: [PATCH 2/5] Free the result of g_strsplit in mono_gc_base_init for boehm --- src/mono/mono/metadata/boehm-gc.c | 1 + src/mono/mono/mini/driver.c | 9 +++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/mono/mono/metadata/boehm-gc.c b/src/mono/mono/metadata/boehm-gc.c index 803f0693f7e25..c8e43d65514e9 100644 --- a/src/mono/mono/metadata/boehm-gc.c +++ b/src/mono/mono/metadata/boehm-gc.c @@ -142,6 +142,7 @@ mono_gc_base_init (void) } } g_free (env); + g_strfreev (opts); } } diff --git a/src/mono/mono/mini/driver.c b/src/mono/mono/mini/driver.c index fb57efb489768..a04dde051c5ae 100644 --- a/src/mono/mono/mini/driver.c +++ b/src/mono/mono/mini/driver.c @@ -2208,14 +2208,11 @@ mono_main (int argc, char* argv[]) } else if (strncmp (argv [i], "--apply-bindings=", 17) == 0) { extra_bindings_config_file = &argv[i][17]; } else if (strncmp (argv [i], "--aot-path=", 11) == 0) { - char **split; + char **split, **ptr; split = g_strsplit (argv [i] + 11, G_SEARCHPATH_SEPARATOR_S, 1000); - while (*split) { - char *tmp = *split; - mono_aot_paths = g_list_append (mono_aot_paths, g_strdup (tmp)); - g_free (tmp); - split++; + for (ptr = split; ptr && *ptr; ptr++) { + mono_aot_paths = g_list_append (mono_aot_paths, g_strdup (*ptr)); } } else if (strncmp (argv [i], "--path=", 7) == 0) { paths = g_list_append (paths, argv [i] + 7); From 8313a6c0dad146d79aa99e0b17877aafe569fc2d Mon Sep 17 00:00:00 2001 From: Jb Evain Date: Fri, 7 Jun 2024 18:53:45 -0700 Subject: [PATCH 3/5] Free the result of g_strsplit in mono_main --- src/mono/mono/mini/driver.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mono/mono/mini/driver.c b/src/mono/mono/mini/driver.c index a04dde051c5ae..22e557d0c8256 100644 --- a/src/mono/mono/mini/driver.c +++ b/src/mono/mono/mini/driver.c @@ -192,7 +192,7 @@ parse_optimizations (guint32 opt, const char* p, gboolean cpu_opts) g_free (arg); } - g_free (parts); + g_strfreev (parts); return opt; } @@ -2214,6 +2214,7 @@ mono_main (int argc, char* argv[]) for (ptr = split; ptr && *ptr; ptr++) { mono_aot_paths = g_list_append (mono_aot_paths, g_strdup (*ptr)); } + g_strfreev (split); } else if (strncmp (argv [i], "--path=", 7) == 0) { paths = g_list_append (paths, argv [i] + 7); } else if (strncmp (argv [i], "--compile-all=", 14) == 0) { From 153b49ba5cbef3e2dce2c6d717bb7beadc43dbee Mon Sep 17 00:00:00 2001 From: Jb Evain Date: Fri, 7 Jun 2024 18:55:11 -0700 Subject: [PATCH 4/5] Free the result of g_strsplit in interp_parse_options --- src/mono/mono/mini/interp/interp.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mono/mono/mini/interp/interp.c b/src/mono/mono/mini/interp/interp.c index db76fa7c13732..3728c995e9dd9 100644 --- a/src/mono/mono/mini/interp/interp.c +++ b/src/mono/mono/mini/interp/interp.c @@ -8034,6 +8034,7 @@ interp_parse_options (const char *options) } } } + g_strfreev (args); } /* From ba7c6694e9a81b3a6e292317369df4e065abfd89 Mon Sep 17 00:00:00 2001 From: Jb Evain Date: Fri, 7 Jun 2024 19:55:15 -0700 Subject: [PATCH 5/5] Avoid double free --- src/mono/mono/mini/driver.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/mono/mono/mini/driver.c b/src/mono/mono/mini/driver.c index 22e557d0c8256..f5a25b152d796 100644 --- a/src/mono/mono/mini/driver.c +++ b/src/mono/mono/mini/driver.c @@ -189,8 +189,6 @@ parse_optimizations (guint32 opt, const char* p, gboolean cpu_opts) exit (1); } } - - g_free (arg); } g_strfreev (parts);