version 1.75, 2014/05/06 23:24:19 |
version 1.76, 2014/05/06 23:27:50 |
|
|
readpubkey(const char *pubkeyfile, struct pubkey *pubkey, |
readpubkey(const char *pubkeyfile, struct pubkey *pubkey, |
const char *sigcomment) |
const char *sigcomment) |
{ |
{ |
|
const char *safepath = "/etc/signify/"; |
|
|
if (!pubkeyfile) { |
if (!pubkeyfile) { |
if ((pubkeyfile = strstr(sigcomment, VERIFYWITH))) { |
if ((pubkeyfile = strstr(sigcomment, VERIFYWITH))) { |
pubkeyfile += strlen(VERIFYWITH); |
pubkeyfile += strlen(VERIFYWITH); |
if (strncmp(pubkeyfile, "/etc/signify/", 13) != 0 || |
if (strncmp(pubkeyfile, safepath, strlen(safepath)) != 0 || |
strstr(pubkeyfile, "/../") != NULL) |
strstr(pubkeyfile, "/../") != NULL) |
errx(1, "untrusted path %s", pubkeyfile); |
errx(1, "untrusted path %s", pubkeyfile); |
} else |
} else |