ada_variant_discrim_name does this:
for (discrim_end = name + strlen (name) - 6; discrim_end != name;
If NAME is too short, this will construct an invalid pointer, perhaps
causing a crash.
This patch arranges to check the length first.
if (name == NULL || name[0] == '\000')
return "";
- for (discrim_end = name + strlen (name) - 6; discrim_end != name;
- discrim_end -= 1)
+ size_t len = strlen (name);
+ if (len < 6)
+ return "";
+ for (discrim_end = name + len - 6; discrim_end != name; discrim_end -= 1)
{
if (startswith (discrim_end, "___XVN"))
break;