Fix out of bounds memory problems in handling simple macro arguments

Fixes handling macro in swigmacros.swg:
  #define %arg(Arg...)        Arg

AddressSanitizer error running Python test-suite.
This commit is contained in:
William S Fulton 2018-01-13 07:33:28 +00:00
commit ab5559f51c

View file

@ -930,19 +930,21 @@ static String *expand_macro(String *name, List *args, String *line_file) {
namelen = Len(aname);
a = strstr(s, name);
while (a) {
char ca = a[namelen + 1];
char ca = a[namelen];
if (!isidchar((int) ca)) {
/* Matched the entire vararg name, not just a prefix */
t = a - 1;
if (*t == '\002') {
t--;
while (t >= s) {
if (isspace((int) *t))
t--;
else if (*t == ',') {
*t = ' ';
} else
break;
if (a > s) {
t = a - 1;
if (*t == '\002') {
t--;
while (t >= s) {
if (isspace((int) *t))
t--;
else if (*t == ',') {
*t = ' ';
} else
break;
}
}
}
}