https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64741

            Bug ID: 64741
           Summary: Incorrect size of UBSan type descriptors
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: sanitizer
          Assignee: unassigned at gcc dot gnu.org
          Reporter: y.gribov at samsung dot com
                CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
                    jakub at gcc dot gnu.org, kcc at gcc dot gnu.org,
                    ryabinin.a.a at gmail dot com

Created attachment 34540
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34540&action=edit
Proposed patch

UBSan uses incomplete type for all UBSan type descriptors:
 struct {
   short __typekind;
   short __typeinfo;
   char __typename[];
 };
and this causes DECL_SIZE to return invalid (too short) values for generated
globals. This later causes ASan to report invalid (again, too short) size to
__asan_register_globals when UBSan is enabled together with ASan.

This may not be a problem for userspace (because only libubsan accesses these
descriptors and it's not sanitized) but causes false positives for kernel
(https://lkml.org/lkml/2015/1/22/670).

I attach a silly fix - if it looks more or less fine, I'll do the regtesting
and fw to gcc-patches.

Reply via email to