Patchwork [asan] Change shadow type from unsigned to signed

login
register
mail settings
Submitter Xinliang David Li
Date Oct. 19, 2012, 3:40 a.m.
Message ID <CAAkRFZLu2jJyi_HofCH6cdVovSJGgJEEfFKzJSaRuQGbTyO0gA@mail.gmail.com>
Download mbox | patch
Permalink /patch/192497/
State New
Headers show

Comments

Xinliang David Li - Oct. 19, 2012, 3:40 a.m.
The following is small bug fix caught during testing. The shadow value
for redzone can be negative, so the shadow type must be signed for the
check to succeed.

Ok for the branch?

thanks,

David
Jakub Jelinek - Oct. 19, 2012, 7:23 a.m.
On Thu, Oct 18, 2012 at 08:40:32PM -0700, Xinliang David Li wrote:
> The following is small bug fix caught during testing. The shadow value
> for redzone can be negative, so the shadow type must be signed for the
> check to succeed.
> 
> Ok for the branch?

Yes (with a proper ChangeLog.asan entry ;)

> --- asan.c      (revision 192567)
> +++ asan.c      (working copy)
> @@ -825,10 +825,10 @@ static void
>  asan_init_shadow_ptr_types (void)
>  {
>    asan_shadow_set = new_alias_set ();
> -  shadow_ptr_types[0] = build_distinct_type_copy (unsigned_char_type_node);
> +  shadow_ptr_types[0] = build_distinct_type_copy (signed_char_type_node);
>    TYPE_ALIAS_SET (shadow_ptr_types[0]) = asan_shadow_set;
>    shadow_ptr_types[0] = build_pointer_type (shadow_ptr_types[0]);
> -  shadow_ptr_types[1] = build_distinct_type_copy (short_unsigned_type_node);
> +  shadow_ptr_types[1] = build_distinct_type_copy (short_integer_type_node);
>    TYPE_ALIAS_SET (shadow_ptr_types[1]) = asan_shadow_set;
>    shadow_ptr_types[1] = build_pointer_type (shadow_ptr_types[1]);
>  }

	Jakub

Patch

Index: asan.c
===================================================================
--- asan.c      (revision 192567)
+++ asan.c      (working copy)
@@ -825,10 +825,10 @@  static void
 asan_init_shadow_ptr_types (void)
 {
   asan_shadow_set = new_alias_set ();
-  shadow_ptr_types[0] = build_distinct_type_copy (unsigned_char_type_node);
+  shadow_ptr_types[0] = build_distinct_type_copy (signed_char_type_node);
   TYPE_ALIAS_SET (shadow_ptr_types[0]) = asan_shadow_set;
   shadow_ptr_types[0] = build_pointer_type (shadow_ptr_types[0]);
-  shadow_ptr_types[1] = build_distinct_type_copy (short_unsigned_type_node);
+  shadow_ptr_types[1] = build_distinct_type_copy (short_integer_type_node);
   TYPE_ALIAS_SET (shadow_ptr_types[1]) = asan_shadow_set;
   shadow_ptr_types[1] = build_pointer_type (shadow_ptr_types[1]);
 }