Re: Fix unchecked use of tree_to_uhwi in tree-ssa-strlen.c

2019-10-14 Thread Richard Biener
On Fri, Oct 11, 2019 at 4:47 PM Richard Sandiford
 wrote:
>
> r273783 introduced an unchecked use of tree_to_uhwi.  This is
> tested by the SVE ACLE patches, but could potentially trigger
> in non-SVE cases too.
>
> Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?

OK.

Richard.

> Richard
>
>
> 2019-10-11  Richard Sandiford  
>
> gcc/
> * tree-ssa-strlen.c (count_nonzero_bytes): Check tree_fits_uhwi_p
> before using tree_to_uhwi.
>
> Index: gcc/tree-ssa-strlen.c
> ===
> --- gcc/tree-ssa-strlen.c   2019-10-11 15:43:51.127514545 +0100
> +++ gcc/tree-ssa-strlen.c   2019-10-11 15:46:11.718524445 +0100
> @@ -4026,10 +4026,10 @@ count_nonzero_bytes (tree exp, unsigned
>
>/* The size of the MEM_REF access determines the number of bytes.  */
>tree type = TREE_TYPE (exp);
> -  if (tree typesize = TYPE_SIZE_UNIT (type))
> -   nbytes = tree_to_uhwi (typesize);
> -  else
> +  tree typesize = TYPE_SIZE_UNIT (type);
> +  if (!typesize || !tree_fits_uhwi_p (typesize))
> return false;
> +  nbytes = tree_to_uhwi (typesize);
>
>/* Handle MEM_REF = SSA_NAME types of assignments.  */
>return count_nonzero_bytes (arg, offset, nbytes, lenrange, nulterm,


Re: Fix unchecked use of tree_to_uhwi in tree-ssa-strlen.c

2019-10-11 Thread Martin Sebor

On 10/11/19 8:47 AM, Richard Sandiford wrote:

r273783 introduced an unchecked use of tree_to_uhwi.  This is
tested by the SVE ACLE patches, but could potentially trigger
in non-SVE cases too.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?


I wasn't able to come up with a C test case that triggers the bug
but the fix seems obviously safe and correct to me.  Thanks for
handling it!

Martin



Richard


2019-10-11  Richard Sandiford  

gcc/
* tree-ssa-strlen.c (count_nonzero_bytes): Check tree_fits_uhwi_p
before using tree_to_uhwi.

Index: gcc/tree-ssa-strlen.c
===
--- gcc/tree-ssa-strlen.c   2019-10-11 15:43:51.127514545 +0100
+++ gcc/tree-ssa-strlen.c   2019-10-11 15:46:11.718524445 +0100
@@ -4026,10 +4026,10 @@ count_nonzero_bytes (tree exp, unsigned
  
/* The size of the MEM_REF access determines the number of bytes.  */

tree type = TREE_TYPE (exp);
-  if (tree typesize = TYPE_SIZE_UNIT (type))
-   nbytes = tree_to_uhwi (typesize);
-  else
+  tree typesize = TYPE_SIZE_UNIT (type);
+  if (!typesize || !tree_fits_uhwi_p (typesize))
return false;
+  nbytes = tree_to_uhwi (typesize);
  
/* Handle MEM_REF = SSA_NAME types of assignments.  */

return count_nonzero_bytes (arg, offset, nbytes, lenrange, nulterm,





Fix unchecked use of tree_to_uhwi in tree-ssa-strlen.c

2019-10-11 Thread Richard Sandiford
r273783 introduced an unchecked use of tree_to_uhwi.  This is
tested by the SVE ACLE patches, but could potentially trigger
in non-SVE cases too.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?

Richard


2019-10-11  Richard Sandiford  

gcc/
* tree-ssa-strlen.c (count_nonzero_bytes): Check tree_fits_uhwi_p
before using tree_to_uhwi.

Index: gcc/tree-ssa-strlen.c
===
--- gcc/tree-ssa-strlen.c   2019-10-11 15:43:51.127514545 +0100
+++ gcc/tree-ssa-strlen.c   2019-10-11 15:46:11.718524445 +0100
@@ -4026,10 +4026,10 @@ count_nonzero_bytes (tree exp, unsigned
 
   /* The size of the MEM_REF access determines the number of bytes.  */
   tree type = TREE_TYPE (exp);
-  if (tree typesize = TYPE_SIZE_UNIT (type))
-   nbytes = tree_to_uhwi (typesize);
-  else
+  tree typesize = TYPE_SIZE_UNIT (type);
+  if (!typesize || !tree_fits_uhwi_p (typesize))
return false;
+  nbytes = tree_to_uhwi (typesize);
 
   /* Handle MEM_REF = SSA_NAME types of assignments.  */
   return count_nonzero_bytes (arg, offset, nbytes, lenrange, nulterm,