30 lines
834 B
Text
30 lines
834 B
Text
Index: macro.c
|
|
--- macro.c.orig
|
|
+++ macro.c
|
|
@@ -850,20 +850,20 @@ expand_substitute(struct place *p, struct expstate *es
|
|
ei = expansionitemarray_get(&es->curmacro->expansion, i);
|
|
switch (ei->itemtype) {
|
|
case EI_STRING:
|
|
- strcat(ret, ei->ei_string);
|
|
+ strlcat(ret, ei->ei_string, len + 1);
|
|
break;
|
|
case EI_PARAM:
|
|
arg = stringarray_get(&es->args, ei->ei_param);
|
|
- strcat(ret, arg);
|
|
+ strlcat(ret, arg, len + 1);
|
|
break;
|
|
case EI_FILE:
|
|
- strcat(ret, "\"");
|
|
- strcat(ret, place_getname(p));
|
|
- strcat(ret, "\"");
|
|
+ strlcat(ret, "\"", len + 1);
|
|
+ strlcat(ret, place_getname(p), len + 1);
|
|
+ strlcat(ret, "\"", len + 1);
|
|
break;
|
|
case EI_LINE:
|
|
snprintf(numbuf, sizeof(numbuf), "%u", p->line);
|
|
- strcat(ret, numbuf);
|
|
+ strlcat(ret, numbuf, len + 1);
|
|
break;
|
|
}
|
|
}
|