download.lst | 4 ++-- external/nss/asan.patch.1 | 4 ++-- external/nss/nss.patch | 6 +++--- solenv/gdb/libreoffice/sw.py | 6 +++++- 4 files changed, 12 insertions(+), 8 deletions(-)
New commits: commit eb3310bd31e2e6df8dd9b6081ccce3fc464a0468 Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Thu Dec 2 11:57:40 2021 +0100 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Wed Jun 8 10:56:54 2022 +0200 gdb: BigPtrArrayPrinter gets confused by libstdc++ std::unique_ptr It looks like this in libstdc++: <BigPtrArray> = { m_ppInf = { _M_t = { <std::__uniq_ptr_impl<BlockInfo*, std::default_delete<BlockInfo* []> >> = { _M_t = { <std::_Tuple_impl<0, BlockInfo**, std::default_delete<BlockInfo* []> >> = { <std::_Tuple_impl<1, std::default_delete<BlockInfo* []> >> = { <std::_Head_base<1, std::default_delete<BlockInfo* []>, true>> = { _M_head_impl = {<No data fields>} }, <No data fields>}, <std::_Head_base<0, BlockInfo**, false>> = { _M_head_impl = 0x567fd20 }, <No data fields>}, <No data fields>} }, <No data fields>} }, Note there are 2 _M_head_impl members, and somehow gdb 11.1-2.fc34 picks the wrong one. A manual cast to std::_Head_base<0, BlockInfo**, false> seems to help. Change-Id: I1332c2fc6eb2661d417fd92a73aed977bbb1dcea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126220 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> (cherry picked from commit c9267ca4fa7fa94a1bf79320bec54428a6ad4804) diff --git a/solenv/gdb/libreoffice/sw.py b/solenv/gdb/libreoffice/sw.py index e170709fb79c..7a5ce193684b 100644 --- a/solenv/gdb/libreoffice/sw.py +++ b/solenv/gdb/libreoffice/sw.py @@ -8,6 +8,7 @@ # import six +import gdb from libreoffice.util import printing class SwPositionPrinter(object): @@ -194,7 +195,10 @@ class BigPtrArrayPrinter(object): class _iterator(six.Iterator): def __init__(self, array): - self.blocks = array['m_ppInf']['_M_t']['_M_t']['_M_head_impl'] + # libstdc++ unique_ptr is a std::tuple which contains multiple + # _M_head_impl members and gdb may pick the wrong one by default + # so have to manually cast it to the one that contains the array + self.blocks = array['m_ppInf']['_M_t']['_M_t'].cast(gdb.lookup_type("std::_Head_base<0, BlockInfo**, false>"))['_M_head_impl'] self.count = array['m_nSize'] self.pos = 0 self.block_count = array['m_nBlock'] commit bed8108e819498982a2b2f36cc635a74644cf5b7 Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Wed Jun 1 12:14:44 2022 +0200 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Wed Jun 8 10:56:53 2022 +0200 nss: upgrade to release 3.79 Fixes CVE-2022-1097 and moz#1767590 "memory safety violations" Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135234 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135248 Reviewed-by: Christian Lohmaier <lohmaier+libreoff...@googlemail.com> (cherry picked from commit bb5216e345c42be440bce60b127af517c036c8ef) Change-Id: I6895f066ad943402231b616dae0d7ed6f5678b5e diff --git a/download.lst b/download.lst index e1649dbb4db7..2e4d44ecf924 100644 --- a/download.lst +++ b/download.lst @@ -179,8 +179,8 @@ export MYTHES_SHA256SUM := 1e81f395d8c851c3e4e75b568e20fa2fa549354e75ab397f9de4b export MYTHES_TARBALL := a8c2c5b8f09e7ede322d5c602ff6a4b6-mythes-1.2.4.tar.gz export NEON_SHA256SUM := db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca export NEON_TARBALL := neon-0.30.2.tar.gz -export NSS_SHA256SUM := 07a9e5b70f121a62706140d4cacc3006d3efb869da40f3a2bf7a65d37847f4d9 -export NSS_TARBALL := nss-3.73-with-nspr-4.32.tar.gz +export NSS_SHA256SUM := 5369ed274a19f480ec94e1faef04da63e3cbac1a82e15bb1751e58b2f274b835 +export NSS_TARBALL := nss-3.79-with-nspr-4.34.tar.gz export ODFGEN_SHA256SUM := 55200027fd46623b9bdddd38d275e7452d1b0ff8aeddcad6f9ae6dc25f610625 export ODFGEN_VERSION_MICRO := 8 export ODFGEN_TARBALL := libodfgen-0.1.$(ODFGEN_VERSION_MICRO).tar.xz diff --git a/external/nss/asan.patch.1 b/external/nss/asan.patch.1 index 7dfd6ed4e782..ce584a34a3b5 100644 --- a/external/nss/asan.patch.1 +++ b/external/nss/asan.patch.1 @@ -7,6 +7,6 @@ diff -ur nss.org/nss/coreconf/Linux.mk nss/nss/coreconf/Linux.mk # against the libsanitizer runtime built into the main executable. -ZDEFS_FLAG = -Wl,-z,defs +ZDEFS_FLAG = - DSO_LDOPTS += $(if $(findstring 2.11.90.0.8,$(shell ld -v)),,$(ZDEFS_FLAG)) $(if $(filter-out $(OS),ANDROID),-Wl$(COMMA)-z$(COMMA)origin '-Wl$(COMMA)-rpath$(COMMA)$$ORIGIN') - LDFLAGS += $(ARCHFLAG) -z noexecstack + DSO_LDOPTS += $(if $(findstring 2.11.90.0.8,$(shell $(LD) -v)),,$(ZDEFS_FLAG)) $(if $(filter-out $(OS),ANDROID),-Wl$(COMMA)-z$(COMMA)origin '-Wl$(COMMA)-rpath$(COMMA)$$ORIGIN') + LDFLAGS += $(ARCHFLAG) -z noexecstack diff --git a/external/nss/nss.patch b/external/nss/nss.patch index d9aaee5199bb..66fbe37dc5ed 100644 --- a/external/nss/nss.patch +++ b/external/nss/nss.patch @@ -87,9 +87,9 @@ # Also, -z defs conflicts with Address Sanitizer, which emits relocations # against the libsanitizer runtime built into the main executable. ZDEFS_FLAG = -Wl,-z,defs --DSO_LDOPTS += $(if $(findstring 2.11.90.0.8,$(shell ld -v)),,$(ZDEFS_FLAG)) -+DSO_LDOPTS += $(if $(findstring 2.11.90.0.8,$(shell ld -v)),,$(ZDEFS_FLAG)) $(if $(filter-out $(OS),ANDROID),-Wl$(COMMA)-z$(COMMA)origin '-Wl$(COMMA)-rpath$(COMMA)$$ORIGIN') - LDFLAGS += $(ARCHFLAG) -z noexecstack +-DSO_LDOPTS += $(if $(findstring 2.11.90.0.8,$(shell $(LD) -v)),,$(ZDEFS_FLAG)) ++DSO_LDOPTS += $(if $(findstring 2.11.90.0.8,$(shell $(LD) -v)),,$(ZDEFS_FLAG)) $(if $(filter-out $(OS),ANDROID),-Wl$(COMMA)-z$(COMMA)origin '-Wl$(COMMA)-rpath$(COMMA)$$ORIGIN') + LDFLAGS += $(ARCHFLAG) -z noexecstack # On Maemo, we need to use the -rpath-link flag for even the standard system @@ -177,8 +177,13 @@