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][PR sanitizer/80414] Fix segfault with -fsanitize=undefined on 32 bit host


On Thu, Apr 13, 2017 at 04:55:52PM +0300, Denis Khalikov wrote:
> +2017-04-13  Denis Khalikov <d.khalikov@partner.samsung.com>
> +
> +	PR sanitizer/80414
> +	* ubsan.c (ubsan_expand_bounds_ifn): Fix wrong tree val generation
> +	for 32 bit host.

I'd say here instead ...): Pass original index to ubsan_encode_value.

> --- /dev/null
> +++ b/gcc/testsuite/c-c++-common/ubsan/bounds-15.c
> @@ -0,0 +1,13 @@
> +/* { dg-do run } */
> +/* { dg-options "-fsanitize=bounds" } */
> +/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */
> +
> +int main()
> +{
> +  long long offset = 10;
> +  char array[10];
> +  char c = array[offset];
> +  return 0;
> +}
> +
> +/* { dg-output "\[^\n\r]*index 10 out of bounds for type 'char \\\[10\\\]'" } */

And the initial \[^\n\r]* makes no sense, there is no ^, so the regexp tries
to match anywhere in the output (which is sufficient here).  Other tests
use /* { dg-output "\[^\n\r]*something..." } */, but only in the second
and further dg-output directive (the regexps from all dg-output are
concatenated together).  So just use
/* { dg-output "index 10 out of bounds for type 'char \\\[10\\\]'" } */

Ok for trunk with those changes, thanks.

	Jakub


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