summaryrefslogtreecommitdiffhomepage
path: root/svr-authpubkey.c
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2017-05-25 00:10:18 +0800
committerMatt Johnston <matt@ucc.asn.au>2017-05-25 00:10:18 +0800
commitfb4e07f7a84068fccd4d42fb538d3123762ba50f (patch)
tree159f748dffe3095d7f3d5f7763f5449040a8c141 /svr-authpubkey.c
parent6e0b539e9ca0b5628c6c5a3d118ad6a2e79e8039 (diff)
don't exit encountering short lines
Diffstat (limited to 'svr-authpubkey.c')
-rw-r--r--svr-authpubkey.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/svr-authpubkey.c b/svr-authpubkey.c
index 6612194..04d1b13 100644
--- a/svr-authpubkey.c
+++ b/svr-authpubkey.c
@@ -200,6 +200,10 @@ static int checkpubkey_line(buffer* line, int line_num, char* filename,
return DROPBEAR_FAILURE; /* line is too short for it to be a valid key */
}
+ /* compare the algorithm. +3 so we have enough bytes to read a space and some base64 characters too. */
+ if (line->pos + algolen+3 > line->len) {
+ goto out;
+ }
/* check the key type */
if (strncmp((const char *) buf_getptr(line, algolen), algo, algolen) != 0) {
int is_comment = 0;