middle-end/100547 - check rtvec_alloc size
This makes the rtvec_alloc argument size_t catching overflow and truncated arguments (from "invalid" testcases), verifying the argument against INT_MAX which is the limit set by the int typed rtvec_def.num_elem member. 2021-05-12 Richard Biener <rguenther@suse.de> PR middle-end/100547 * rtl.h (rtvec_alloc): Make argument size_t. * rtl.c (rtvec_alloc): Verify the count is less than INT_MAX.
This commit is contained in:
parent
19040050aa
commit
229a6dbd9e
2 changed files with 5 additions and 2 deletions
|
@ -158,10 +158,13 @@ static size_t rtvec_alloc_sizes;
|
|||
Store the length, and initialize all elements to zero. */
|
||||
|
||||
rtvec
|
||||
rtvec_alloc (int n)
|
||||
rtvec_alloc (size_t n)
|
||||
{
|
||||
rtvec rt;
|
||||
|
||||
/* rtvec_def.num_elem is an int. */
|
||||
gcc_assert (n < INT_MAX);
|
||||
|
||||
rt = ggc_alloc_rtvec_sized (n);
|
||||
/* Clear out the vector. */
|
||||
memset (&rt->elem[0], 0, n * sizeof (rtx));
|
||||
|
|
|
@ -2976,7 +2976,7 @@ extern rtx rtx_alloc_stat_v (RTX_CODE MEM_STAT_DECL, int);
|
|||
(sizeof (struct hwivec_def) \
|
||||
+ ((NWORDS)-1) * sizeof (HOST_WIDE_INT))) \
|
||||
|
||||
extern rtvec rtvec_alloc (int);
|
||||
extern rtvec rtvec_alloc (size_t);
|
||||
extern rtvec shallow_copy_rtvec (rtvec);
|
||||
extern bool shared_const_p (const_rtx);
|
||||
extern rtx copy_rtx (rtx);
|
||||
|
|
Loading…
Add table
Reference in a new issue