version 1.1, 2013/07/22 00:51:38
|
version 1.1.1.2, 2014/06/15 16:12:54
|
Line 47
|
Line 47
|
* allocated result. Returns the same string if there are no escapes. |
* allocated result. Returns the same string if there are no escapes. |
*/ |
*/ |
char * |
char * |
expand_prompt(const char *old_prompt, const char *user, const char *host) | expand_prompt(const char *old_prompt, const char *auth_user) |
{ |
{ |
size_t len, n; |
size_t len, n; |
int subst; |
int subst; |
Line 72 expand_prompt(const char *old_prompt, const char *user
|
Line 72 expand_prompt(const char *old_prompt, const char *user
|
break; |
break; |
case 'p': |
case 'p': |
p++; |
p++; |
if (def_rootpw) | len += strlen(auth_user) - 2; |
len += 2; | |
else if (def_targetpw || def_runaspw) | |
len += strlen(runas_pw->pw_name) - 2; | |
else | |
len += strlen(user_name) - 2; | |
subst = 1; |
subst = 1; |
break; |
break; |
case 'u': |
case 'u': |
Line 110 expand_prompt(const char *old_prompt, const char *user
|
Line 105 expand_prompt(const char *old_prompt, const char *user
|
case 'h': |
case 'h': |
p++; |
p++; |
n = strlcpy(np, user_shost, np - endp); |
n = strlcpy(np, user_shost, np - endp); |
if (n >= np - endp) | if (n >= (size_t)(np - endp)) |
goto oflow; |
goto oflow; |
np += n; |
np += n; |
continue; |
continue; |
case 'H': |
case 'H': |
p++; |
p++; |
n = strlcpy(np, user_host, np - endp); |
n = strlcpy(np, user_host, np - endp); |
if (n >= np - endp) | if (n >= (size_t)(np - endp)) |
goto oflow; |
goto oflow; |
np += n; |
np += n; |
continue; |
continue; |
case 'p': |
case 'p': |
p++; |
p++; |
if (def_rootpw) | n = strlcpy(np, auth_user, np - endp); |
n = strlcpy(np, "root", np - endp); | if (n >= (size_t)(np - endp)) |
else if (def_targetpw || def_runaspw) | |
n = strlcpy(np, runas_pw->pw_name, np - endp); | |
else | |
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++; |
n = strlcpy(np, user_name, np - endp); |
n = strlcpy(np, user_name, np - endp); |
if (n >= np - endp) | if (n >= (size_t)(np - endp)) |
goto oflow; |
goto oflow; |
np += n; |
np += n; |
continue; |
continue; |
case 'U': |
case 'U': |
p++; |
p++; |
n = strlcpy(np, runas_pw->pw_name, np - endp); |
n = strlcpy(np, runas_pw->pw_name, np - endp); |
if (n >= np - endp) | if (n >= (size_t)(np - endp)) |
goto oflow; |
goto oflow; |
np += n; |
np += n; |
continue; |
continue; |
Line 168 expand_prompt(const char *old_prompt, const char *user
|
Line 158 expand_prompt(const char *old_prompt, const char *user
|
|
|
oflow: |
oflow: |
/* We pre-allocate enough space, so this should never happen. */ |
/* We pre-allocate enough space, so this should never happen. */ |
fatalx(_("internal error, %s overflow"), "expand_prompt()"); | fatalx(U_("internal error, %s overflow"), "expand_prompt()"); |
} |
} |