Fix bug in keydata_alloc()

This commit is contained in:
Giovanni Bajo
2012-04-25 17:39:12 +02:00
committed by Simon Kelley
parent 0decc869ae
commit ba8badd6df

View File

@@ -1333,6 +1333,8 @@ struct keydata *keydata_alloc(char *data, size_t len)
{
struct keydata *block, *ret = NULL;
struct keydata **prev = &ret;
size_t blen;
while (len > 0)
{
if (keyblock_free)
@@ -1350,9 +1352,10 @@ struct keydata *keydata_alloc(char *data, size_t len)
return NULL;
}
memcpy(block->key, data, len > KEYBLOCK_LEN ? KEYBLOCK_LEN : len);
data += KEYBLOCK_LEN;
len -= KEYBLOCK_LEN;
blen = len > KEYBLOCK_LEN ? KEYBLOCK_LEN : len;
memcpy(block->key, data, blen);
data += blen;
len -= blen;
*prev = block;
prev = &block->next;
block->next = NULL;