This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] sim: fix minor --sysroot mem leak


The current --sysroot parsing attempts to keep from leaking memory by
treating the empty string specially (sine this is the initial value),
but it ends up leaking memory when the arg is an empty string.  So if
someone uses --sysroot "", the old value is leaked, as is the new one.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>

2011-05-26  Mike Frysinger  <vapier@gentoo.org>

	* sim-options.c (standard_option_handler): Remove arg[0] check
	when freeing simulator_sysroot.  Only strdup arg when arg[0] is
	not an empty string, otherwise assign "" back to it.
---
 sim/common/sim-options.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/sim/common/sim-options.c b/sim/common/sim-options.c
index ddab83d..1a0c541 100644
--- a/sim/common/sim-options.c
+++ b/sim/common/sim-options.c
@@ -458,10 +458,14 @@ standard_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt,
 
     case OPTION_SYSROOT:
       /* Don't leak memory in the odd event that there's lots of
-	 --sysroot=... options.  */
-      if (simulator_sysroot[0] != '\0' && arg[0] != '\0')
+	 --sysroot=... options.  We treat "" specially since this
+	 is the statically initialized value and cannot free it.  */
+      if (simulator_sysroot[0] != '\0')
 	free (simulator_sysroot);
-      simulator_sysroot = xstrdup (arg);
+      if (arg[0] != '\0')
+	simulator_sysroot = xstrdup (arg);
+      else
+	simulator_sysroot = "";
       break;
     }
 
-- 
1.7.5.rc3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]