version 1.64, 2006/03/20 17:10:19 |
version 1.65, 2006/03/25 00:05:41 |
|
|
static char * |
static char * |
expand_authorized_keys(const char *filename, struct passwd *pw) |
expand_authorized_keys(const char *filename, struct passwd *pw) |
{ |
{ |
char *file, *ret; |
char *file, ret[MAXPATHLEN]; |
|
int i; |
|
|
file = percent_expand(filename, "h", pw->pw_dir, |
file = percent_expand(filename, "h", pw->pw_dir, |
"u", pw->pw_name, (char *)NULL); |
"u", pw->pw_name, (char *)NULL); |
|
|
if (*file == '/') |
if (*file == '/') |
return (file); |
return (file); |
|
|
ret = xmalloc(MAXPATHLEN); |
i = snprintf(ret, sizeof(ret), "%s/%s", pw->pw_dir, file); |
if (strlcpy(ret, pw->pw_dir, MAXPATHLEN) >= MAXPATHLEN || |
if (i < 0 || (size_t)i >= sizeof(ret)) |
strlcat(ret, "/", MAXPATHLEN) >= MAXPATHLEN || |
|
strlcat(ret, file, MAXPATHLEN) >= MAXPATHLEN) |
|
fatal("expand_authorized_keys: path too long"); |
fatal("expand_authorized_keys: path too long"); |
|
|
xfree(file); |
xfree(file); |
return (ret); |
return (xstrdup(ret)); |
} |
} |
|
|
char * |
char * |