2011-02-28 Michael Snyder <msnyder@vmware.com>
authorMichael Snyder <msnyder@vmware.com>
Tue, 1 Mar 2011 01:44:24 +0000 (01:44 +0000)
committerMichael Snyder <msnyder@vmware.com>
Tue, 1 Mar 2011 01:44:24 +0000 (01:44 +0000)
* objc-lang.c (selectors_info): Add a small safety margin to
avoid overflow.
(classes_info): Error out on too long REGEXP.

gdb/ChangeLog
gdb/objc-lang.c

index 90e9c001359367e2e7bddeb0043b83df7502d02c..b1b8bf9d0a45369febe02fcb7b3abf201ea80c33 100644 (file)
@@ -1,5 +1,9 @@
 2011-02-28  Michael Snyder  <msnyder@vmware.com>
 
+       * objc-lang.c (selectors_info): Add a small safety margin to 
+       avoid overflow.
+       (classes_info): Error out on too long REGEXP.
+
        * infrun.c (handle_inferior_event): Remove unused function call.
 
        * fork-child.c (fork_inferior): Remove ifdef'd code and
index 26b7fb1d124cd2eb677f865c8061d988d00edf09..d656044c7fd2765b3303536b761859eeafedac20 100644 (file)
@@ -720,7 +720,7 @@ selectors_info (char *regexp, int from_tty)
        strcpy(myregexp, ".*]");
       else
        {
-         if (sizeof (myregexp) < strlen (regexp) + 1)
+         if (sizeof (myregexp) < strlen (regexp) + 4)
            error (_("Regexp is too long: %s"), regexp);
          strcpy(myregexp, regexp);
          if (myregexp[strlen(myregexp) - 1] == '$') /* end of selector */
@@ -863,6 +863,8 @@ classes_info (char *regexp, int from_tty)
     strcpy(myregexp, ".* ");   /* Null input: match all objc classes.  */
   else
     {
+      if (sizeof (myregexp) < strlen (regexp) + 4)
+       error (_("Regexp is too long: %s"), regexp);
       strcpy(myregexp, regexp);
       if (myregexp[strlen(myregexp) - 1] == '$')
        /* In the method name, the end of the class name is marked by ' '.  */