mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 13:14:04 +00:00
Merge pull request #12780 from jdgleaver/database-crc-fix
(Database) Fix heap-buffer-overflow when fetching CRC values
This commit is contained in:
commit
0c806447b5
@ -281,8 +281,23 @@ static int database_cursor_iterate(libretrodb_cursor_t *cur,
|
||||
else if (string_is_equal(str, "size"))
|
||||
db_info->size = (unsigned)val->val.uint_;
|
||||
else if (string_is_equal(str, "crc"))
|
||||
db_info->crc32 = swap_if_little32(
|
||||
*(uint32_t*)val->val.binary.buff);
|
||||
{
|
||||
switch (val->val.binary.len)
|
||||
{
|
||||
case 1:
|
||||
db_info->crc32 = *(uint8_t*)val->val.binary.buff;
|
||||
break;
|
||||
case 2:
|
||||
db_info->crc32 = swap_if_little16(*(uint16_t*)val->val.binary.buff);
|
||||
break;
|
||||
case 4:
|
||||
db_info->crc32 = swap_if_little32(*(uint32_t*)val->val.binary.buff);
|
||||
break;
|
||||
default:
|
||||
db_info->crc32 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (string_is_equal(str, "sha1"))
|
||||
db_info->sha1 = bin_to_hex_alloc(
|
||||
(uint8_t*)val->val.binary.buff, val->val.binary.len);
|
||||
|
Loading…
x
Reference in New Issue
Block a user