]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
gensupport: Don't segfault on empty attrs list
authorTamar Christina <tamar.christina@arm.com>
Fri, 4 Aug 2023 12:48:56 +0000 (13:48 +0100)
committerTamar Christina <tamar.christina@arm.com>
Fri, 4 Aug 2023 12:48:56 +0000 (13:48 +0100)
Currently we segfault when len == 0 for an attribute list.

essentially [cons: =0, 1, 2, 3; attrs: ] segfaults but should be equivalent to
[cons: =0, 1, 2, 3] and [cons: =0, 1, 2, 3; attrs:].  This fixes it by just
returning early and leaving it to the validators whether this should error out
or not.

gcc/ChangeLog:

* gensupport.cc (conlist): Support length 0 attribute.

gcc/gensupport.cc

index 959d1d9c83cf397fcb344e8d3db0f339a967587f..b2feb03363aca93cf1d7101cc31ed6947905d154 100644 (file)
@@ -620,7 +620,7 @@ public:
   conlist (const char *ns, unsigned int len, bool numeric)
   {
     /* Trim leading whitespaces.  */
-    while (ISBLANK (*ns))
+    while (len > 0 && ISBLANK (*ns))
       {
        ns++;
        len--;
@@ -632,7 +632,7 @@ public:
        break;
 
     /* Parse off any modifiers.  */
-    while (!ISALNUM (*ns))
+    while (len > 0 && !ISALNUM (*ns))
       {
        con += *(ns++);
        len--;