D: fix UBSAN
authorMartin Liska <mliska@suse.cz>
Mon, 6 Dec 2021 12:02:22 +0000 (13:02 +0100)
committerMartin Liska <mliska@suse.cz>
Thu, 9 Dec 2021 08:46:25 +0000 (09:46 +0100)
Fixes:
gcc/d/expr.cc:2596:9: runtime error: null pointer passed as argument 2, which is declared to never be null

gcc/d/ChangeLog:

* expr.cc: Call memcpy only when length != 0.

gcc/d/expr.cc

index 2831eef..8e1d43e 100644 (file)
@@ -2598,7 +2598,8 @@ public:
        /* Copy the string contents to a null terminated string.  */
        dinteger_t length = (e->len * e->sz);
        char *string = XALLOCAVEC (char, length + 1);
-       memcpy (string, e->string, length);
+       if (length > 0)
+         memcpy (string, e->string, length);
        string[length] = '\0';
 
        /* String value and type includes the null terminator.  */