if (subst) {
new_prompt = (char *) emalloc(++len);
- *new_prompt = '\0';
- endp = new_prompt + len - 1;
+ endp = new_prompt + len;
for (p = old_prompt, np = new_prompt; *p; p++) {
if (p[0] =='%') {
switch (p[1]) {
case 'h':
p++;
- if ((n = strlcat(new_prompt, user_shost, len)) >= len)
+ n = strlcpy(np, user_shost, np - endp);
+ if (n >= np - endp)
goto oflow;
np += n;
continue;
case 'H':
p++;
- if ((n = strlcat(new_prompt, user_host, len)) >= len)
+ n = strlcpy(np, user_host, np - endp);
+ if (n >= np - endp)
goto oflow;
np += n;
continue;
case 'u':
p++;
- if ((n = strlcat(new_prompt, user_name, len)) >= len)
+ n = strlcpy(np, user_name, np - endp);
+ if (n >= np - endp)
goto oflow;
np += n;
continue;
case 'U':
p++;
- if ((n = strlcat(new_prompt, *user_runas, len)) >= len)
+ n = strlcpy(np, *user_runas, np - endp);
+ if (n >= np - endp)
goto oflow;
np += n;
continue;
break;
}
}
+ *np++ = *p;
if (np >= endp)
goto oflow;
- *np++ = *p;
}
*np = '\0';
} else