[Bug localedata/14594] New: Testing a mangled pointer results in initializer not being called

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[Bug localedata/14594] New: Testing a mangled pointer results in initializer not being called

jsm28 at gcc dot gnu.org
http://sourceware.org/bugzilla/show_bug.cgi?id=14594

             Bug #: 14594
           Summary: Testing a mangled pointer results in initializer not
                    being called
           Product: glibc
           Version: 2.17
            Status: NEW
          Severity: normal
          Priority: P2
         Component: localedata
        AssignedTo: [hidden email]
        ReportedBy: [hidden email]
                CC: [hidden email]
    Classification: Unclassified


If a gconv module's init function has an address that is the same as the
pointer guard value, then the gconv module's init function will not be called.

The problem is find_module tests the *mangled* pointer against NULL and if that
test is false, then the initializer is called.

Obviously with the mangling function being a simple xor, if the function's
address is the same as the pointer guard, the mangled value will be zero and
the initializer doesn't get called.

Inspection shows similar problems gconv_db.c.  There's also an instance in
btowc.c, but in that case the test is just controlling an optimization and as
far as I can tell doesn't result in incorrect operation.

--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.