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]

Re: [RFC] GDB crash with empty executable name (MinGW)


> I think it would be fine, but I would recommend putting some info into
> the comment explaining why this check was added... just some detail from
> your original note.

Agreed. Here is what I checked in. I can make additional adjustments
if necessary.

Thank you!
-- 
Joel
commit f15ba96bbf48880f5a60443e78bab39070a5fc33
Author: Joel Brobecker <brobecker@adacore.com>
Date:   Fri Jan 8 16:15:54 2010 +0400

    GDB crash with empty executable name (MinGW).
    
            * source.c (openp): Add assert that parameter string is not NULL.
            if parameter string is an empty string, then return with a failure
            immediately.

diff --git a/gdb/source.c b/gdb/source.c
index fcfce65..2090326 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -707,6 +707,20 @@ openp (const char *path, int opts, const char *string,
 
   /* The open syscall MODE parameter is not specified.  */
   gdb_assert ((mode & O_CREAT) == 0);
+  gdb_assert (string != NULL);
+
+  /* A file with an empty name cannot possibly exist.  Report a failure
+     without further checking.
+
+     This is an optimization which also defends us against buggy
+     implementations of the "stat" function.  For instance, we have
+     noticed that a MinGW debugger built on Windows XP 32bits crashes
+     when the debugger is started with an empty argument.  */
+  if (string[0] == '\0')
+    {
+      errno = ENOENT;
+      return -1;
+    }
 
   if (!path)
     path = ".";

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