mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-22 04:06:58 +02:00
util/nvmutil: rw: safer bound check
avoid pointer-range overflow arithmetic. this patch doesn't change behaviour, but makes an overflow impossible. Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
@@ -1812,18 +1812,20 @@ rw_gbe_file_exact(int fd, u8 *mem, size_t nrw,
|
|||||||
{
|
{
|
||||||
size_t mem_addr;
|
size_t mem_addr;
|
||||||
size_t buf_addr;
|
size_t buf_addr;
|
||||||
size_t buf_end;
|
|
||||||
|
|
||||||
if (mem == NULL)
|
if (mem == NULL)
|
||||||
goto err_rw_gbe_file_exact;
|
goto err_rw_gbe_file_exact;
|
||||||
|
|
||||||
mem_addr = (size_t)(void *)mem;
|
mem_addr = (size_t)(void *)mem;
|
||||||
buf_addr = (size_t)(void *)buf;
|
buf_addr = (size_t)(void *)buf;
|
||||||
buf_end = buf_addr + (size_t)GBE_FILE_SIZE;
|
|
||||||
|
|
||||||
if (mem != (void *)pad &&
|
if (mem != (void *)pad) {
|
||||||
(mem_addr < buf_addr || mem_addr >= buf_end))
|
if (mem_addr < buf_addr)
|
||||||
goto err_rw_gbe_file_exact;
|
goto err_rw_gbe_file_exact;
|
||||||
|
|
||||||
|
if ((mem_addr - buf_addr) >= (size_t)GBE_FILE_SIZE)
|
||||||
|
goto err_rw_gbe_file_exact;
|
||||||
|
}
|
||||||
|
|
||||||
if (off < 0 || off >= gbe_file_size)
|
if (off < 0 || off >= gbe_file_size)
|
||||||
goto err_rw_gbe_file_exact;
|
goto err_rw_gbe_file_exact;
|
||||||
|
|||||||
Reference in New Issue
Block a user