diff options
Diffstat (limited to 'external/firebird/sanitizer.patch')
-rw-r--r-- | external/firebird/sanitizer.patch | 23 |
1 files changed, 3 insertions, 20 deletions
diff --git a/external/firebird/sanitizer.patch b/external/firebird/sanitizer.patch index e727d581e626..3707b5bf54af 100644 --- a/external/firebird/sanitizer.patch +++ b/external/firebird/sanitizer.patch @@ -52,29 +52,12 @@ --- src/common/os/posix/mod_loader.cpp +++ src/common/os/posix/mod_loader.cpp -@@ -88,7 +88,7 @@ +@@ -92,7 +92,7 @@ - ModuleLoader::Module* ModuleLoader::loadModule(const Firebird::PathName& modPath) + ModuleLoader::Module* ModuleLoader::loadModule(ISC_STATUS* status, const Firebird::PathName& modPath) { - void* module = dlopen(modPath.nullStr(), FB_RTLD_MODE); + void* module = dlopen(modPath.nullStr(), FB_RTLD_MODE | RTLD_GLOBAL); if (module == NULL) { - #ifdef DEV_BUILD ---- src/jrd/met.epp -+++ src/jrd/met.epp -@@ -1486,10 +1486,11 @@ - USHORT offset = p[0] | (p[1] << 8); - p += 2; - -- const Ods::Descriptor* odsDflDesc = (Ods::Descriptor*) p; -- p = (UCHAR*) (odsDflDesc + 1); -+ Ods::Descriptor odsDflDesc; -+ memcpy(&odsDflDesc, p, sizeof (Ods::Descriptor)); -+ p = (UCHAR*) (((Ods::Descriptor*) p) + 1); - -- dsc desc = *odsDflDesc; -+ dsc desc = odsDflDesc; - desc.dsc_address = const_cast<UCHAR*>(p); - EVL_make_value(tdbb, &desc, &format->fmt_defaults[offset], relation->rel_pool); - + if (status) |