X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=sshdss.c;h=0484c44320a54803628e40ea04e25a1fbbab07b7;hb=896bb7c74d06200d92f846d666224e3f9c80b634;hp=6cf5830d5bc64994b2ab6ec0aae3d0118834a5b5;hpb=aa5bae89163f96453ee84541c1e96c650b3bc8f8;p=PuTTY.git diff --git a/sshdss.c b/sshdss.c index 6cf5830d..0484c443 100644 --- a/sshdss.c +++ b/sshdss.c @@ -42,7 +42,9 @@ static void getstring(char **data, int *datalen, char **p, int *length) *p = NULL; if (*datalen < 4) return; - *length = GET_32BIT(*data); + *length = toint(GET_32BIT(*data)); + if (*length < 0) + return; *datalen -= 4; *data += 4; if (*datalen < *length) @@ -98,7 +100,7 @@ static void *dss_newkey(char *data, int len) } #endif - if (!p || memcmp(p, "ssh-dss", 7)) { + if (!p || slen != 7 || memcmp(p, "ssh-dss", 7)) { sfree(dss); return NULL; }