mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-28 10:00:51 +00:00
Fixes for invalid memory accesses triggered by running windres on corrupt binaries.
PR binutils/17512 * rcparse.y: Add checks to avoid integer divide by zero. * rescoff.c (read_coff_rsrc): Add check on the size of the resource section. (read_coff_res_dir): Add check on the nesting level. Check for resource names overrunning the buffer. * resrc.c (write_rc_messagetable): Update formatting. Add check of 'elen' being zero.
This commit is contained in:
@@ -1887,12 +1887,12 @@ sizednumexpr:
|
||||
}
|
||||
| sizednumexpr '/' sizednumexpr
|
||||
{
|
||||
$$.val = $1.val / $3.val;
|
||||
$$.val = $1.val / ($3.val ? $3.val : 1);
|
||||
$$.dword = $1.dword || $3.dword;
|
||||
}
|
||||
| sizednumexpr '%' sizednumexpr
|
||||
{
|
||||
$$.val = $1.val % $3.val;
|
||||
$$.val = $1.val % ($3.val ? $3.val : 1);
|
||||
$$.dword = $1.dword || $3.dword;
|
||||
}
|
||||
| sizednumexpr '+' sizednumexpr
|
||||
@@ -1966,12 +1966,13 @@ sizedposnumexpr:
|
||||
}
|
||||
| sizedposnumexpr '/' sizednumexpr
|
||||
{
|
||||
$$.val = $1.val / $3.val;
|
||||
$$.val = $1.val / ($3.val ? $3.val : 1);
|
||||
$$.dword = $1.dword || $3.dword;
|
||||
}
|
||||
| sizedposnumexpr '%' sizednumexpr
|
||||
{
|
||||
$$.val = $1.val % $3.val;
|
||||
/* PR 17512: file: 89105a25. */
|
||||
$$.val = $1.val % ($3.val ? $3.val : 1);
|
||||
$$.dword = $1.dword || $3.dword;
|
||||
}
|
||||
| sizedposnumexpr '+' sizednumexpr
|
||||
|
||||
Reference in New Issue
Block a user