mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-27 02:02:26 +00:00
Fix an integer overflow in get_ssh_string.
If the length field in the input data was so large that adding 4 to it caused wraparound, the error check could fail to trigger. Fortunately, this praticular get_ssh_string function is only used during private key import from foreign file formats, so it won't be facing hostile data.
This commit is contained in:
parent
737cb2d24e
commit
19467455fe
2
misc.c
2
misc.c
@ -1118,7 +1118,7 @@ void *get_ssh_string(int *datalen, const void **data, int *stringlen)
|
|||||||
if (*datalen < 4)
|
if (*datalen < 4)
|
||||||
return NULL;
|
return NULL;
|
||||||
len = GET_32BIT_MSB_FIRST((const unsigned char *)*data);
|
len = GET_32BIT_MSB_FIRST((const unsigned char *)*data);
|
||||||
if (*datalen < len+4)
|
if (*datalen - 4 < len)
|
||||||
return NULL;
|
return NULL;
|
||||||
ret = (void *)((const char *)*data + 4);
|
ret = (void *)((const char *)*data + 4);
|
||||||
*datalen -= len + 4;
|
*datalen -= len + 4;
|
||||||
|
Loading…
Reference in New Issue
Block a user