This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Improve checks in c_strlen (PR 87053)


On 08/22/2018 08:41 AM, Bernd Edlinger wrote:
> Hi!
> 
> 
> This patch adds some more checks to c_getstr to fix PR middle-end/87053
> wrong code bug.
> 
> Unfortunately this patch alone is not sufficient to fix the problem,
> but also the patch for PR 86714 that hardens c_getstr is necessary
> to prevent the wrong folding.
> 
> 
> Bootstrapped and reg-tested on top of my PR 86711/86714 patch.
> Is it OK for trunk?
> 
> 
> Thanks
> Bernd.
> 
> 
> 
> patch-pr87053.diff
> 
> 
> gcc:
> 2018-08-22  Bernd Edlinger  <bernd.edlinger@hotmail.de>
> 
> 	PR middle-end/87053
> 	* builtins.c (c_strlen): Improve range checks.
> 
> testsuite:
> 2018-08-22  Bernd Edlinger  <bernd.edlinger@hotmail.de>
> 
> 	PR middle-end/87053
> 	* gcc.c-torture/execute/pr87053.c: New test.
This is OK and I'm going to go ahead and commit it momentarily.


>> @@ -700,6 +700,10 @@ c_strlen (tree src, int only_value, unsi
>    unsigned len = string_length (ptr + eltoff * eltsize, eltsize,
>  				strelts - eltoff);
>  
> +  /* Don't know what to return if there was no zero termination.  */
> +  if (len > maxelts - eltoff)
> +    return NULL_TREE;
> +
I'm going to add a comment to the code above indicating that it'd be
nice if this could be an assert in the future.  We're not there yet.

Jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]