Bug #: 14594
Summary: Testing a mangled pointer results in initializer not
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.