1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-08-08 19:02:06 +03:00

pki: Improve pubkey buffer handling form file

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
Andreas Schneider
2018-07-05 13:21:23 +02:00
parent c866768da4
commit c3dac948c9

View File

@@ -1028,6 +1028,7 @@ int ssh_pki_import_pubkey_file(const char *filename, ssh_key *pkey)
enum ssh_keytypes_e type;
struct stat sb;
char *key_buf, *p;
size_t buflen, i;
const char *q;
FILE *file;
off_t size;
@@ -1079,19 +1080,29 @@ int ssh_pki_import_pubkey_file(const char *filename, ssh_key *pkey)
return SSH_ERROR;
}
key_buf[size] = '\0';
buflen = strlen(key_buf);
q = p = key_buf;
while (*p != '\0' && !isspace((int)*p)) p++;
*p = '\0';
for (i = 0; i < buflen; i++) {
if (isspace((int)p[i])) {
p[i] = '\0';
break;
}
}
type = ssh_key_type_from_name(q);
if (type == SSH_KEYTYPE_UNKNOWN) {
SAFE_FREE(key_buf);
return SSH_ERROR;
}
q = ++p;
while (*p != '\0' && !isspace((int)*p)) p++;
*p = '\0';
q = &p[i + 1];
for (; i < buflen; i++) {
if (isspace((int)p[i])) {
p[i] = '\0';
break;
}
}
rc = ssh_pki_import_pubkey_base64(q, type, pkey);
SAFE_FREE(key_buf);