version 1.8, 2003/03/15 21:23:53 |
version 1.9, 2003/04/01 15:47:51 |
|
|
#include "sudo.h" |
#include "sudo.h" |
|
|
#ifndef lint |
#ifndef lint |
static const char rcsid[] = "$Sudo: check.c,v 1.210 2003/03/15 20:31:01 millert Exp $"; |
static const char rcsid[] = "$Sudo: check.c,v 1.211 2003/04/01 14:58:55 millert Exp $"; |
#endif /* lint */ |
#endif /* lint */ |
|
|
/* Status codes for timestamp_status() */ |
/* Status codes for timestamp_status() */ |
|
|
|
|
if (subst) { |
if (subst) { |
new_prompt = (char *) emalloc(++len); |
new_prompt = (char *) emalloc(++len); |
*new_prompt = '\0'; |
endp = new_prompt + len; |
endp = new_prompt + len - 1; |
|
for (p = old_prompt, np = new_prompt; *p; p++) { |
for (p = old_prompt, np = new_prompt; *p; p++) { |
if (p[0] =='%') { |
if (p[0] =='%') { |
switch (p[1]) { |
switch (p[1]) { |
case 'h': |
case 'h': |
p++; |
p++; |
if ((n = strlcat(new_prompt, user_shost, len)) >= len) |
n = strlcpy(np, user_shost, np - endp); |
|
if (n >= np - endp) |
goto oflow; |
goto oflow; |
np += n; |
np += n; |
continue; |
continue; |
case 'H': |
case 'H': |
p++; |
p++; |
if ((n = strlcat(new_prompt, user_host, len)) >= len) |
n = strlcpy(np, user_host, np - endp); |
|
if (n >= np - endp) |
goto oflow; |
goto oflow; |
np += n; |
np += n; |
continue; |
continue; |
case 'u': |
case 'u': |
p++; |
p++; |
if ((n = strlcat(new_prompt, user_name, len)) >= len) |
n = strlcpy(np, user_name, np - endp); |
|
if (n >= np - endp) |
goto oflow; |
goto oflow; |
np += n; |
np += n; |
continue; |
continue; |
case 'U': |
case 'U': |
p++; |
p++; |
if ((n = strlcat(new_prompt, *user_runas, len)) >= len) |
n = strlcpy(np, *user_runas, np - endp); |
|
if (n >= np - endp) |
goto oflow; |
goto oflow; |
np += n; |
np += n; |
continue; |
continue; |
|
|
break; |
break; |
} |
} |
} |
} |
|
*np++ = *p; |
if (np >= endp) |
if (np >= endp) |
goto oflow; |
goto oflow; |
*np++ = *p; |
|
} |
} |
*np = '\0'; |
*np = '\0'; |
} else |
} else |