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