[Libreoffice-commits] core.git: 2 commits - external/harfbuzz

Stephan Bergmann sbergman at redhat.com
Fri Nov 4 09:25:41 UTC 2016


 external/harfbuzz/ubsan.patch |   22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

New commits:
commit 99f7aacd5b39a0f79351d8d7568b2e43d39878cb
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Nov 4 10:23:47 2016 +0100

    external/harfbuzz: -fsanitize=function
    
    Change-Id: Ie72eec98f1337e895b81c4ebebeefa4861a5a6a1

diff --git a/external/harfbuzz/ubsan.patch b/external/harfbuzz/ubsan.patch
index 8fa6abe..5f8f008 100644
--- a/external/harfbuzz/ubsan.patch
+++ b/external/harfbuzz/ubsan.patch
@@ -9,6 +9,17 @@
    }
  };
  
+@@ -394,8 +394,9 @@
+ }
+ 
+ static void
+-_hb_ot_font_destroy (hb_ot_font_t *ot_font)
++_hb_ot_font_destroy (void *ot_font_)
+ {
++  hb_ot_font_t *ot_font = static_cast<hb_ot_font_t *>(ot_font_);
+   ot_font->cmap.fini ();
+   ot_font->h_metrics.fini ();
+   ot_font->v_metrics.fini ();
 --- src/hb-ot-map-private.hh
 +++ src/hb-ot-map-private.hh
 @@ -52,8 +52,11 @@
commit 6694ce6b542367074667e4445a6b7f50568a2729
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Nov 4 10:05:31 2016 +0100

    external/harfbuzz: Work around ASan out of bounds warning
    
    CppunitTest_sccomp_lpsolver failed with the below error.  struct _mtx
    (hb-ot-hmtx-table.hh) has two "variable-sized" array members (each of size
    VAR=1) longMetric and leadingBearingX, where the latter isn't used anywhere in
    the code; so removing it would make ASan's variable-sized array member heuristic
    kick in here and suppress the warning, but who knows whether there's some
    requirement on the exact sizeof(_mtx).
    
    > hb-ot-font.cc:128:12: runtime error: index 3 out of bounds for type 'OT::LongMetric const[1]'
    >  hb_ot_face_metrics_accelerator_t::get_advance(unsigned int) const workdir/UnpackedTarball/harfbuzz/src/hb-ot-font.cc:128:43
    >  hb_ot_get_glyph_h_advance(hb_font_t*, void*, unsigned int, void*) workdir/UnpackedTarball/harfbuzz/src/hb-ot-font.cc:439:47
    >  hb_font_t::get_glyph_h_advance(unsigned int) workdir/UnpackedTarball/harfbuzz/src/./hb-font-private.hh:207:12
    >  hb_ot_position_default(hb_ot_shape_context_t*) workdir/UnpackedTarball/harfbuzz/src/hb-ot-shape.cc:613:35
    >  hb_ot_position(hb_ot_shape_context_t*) workdir/UnpackedTarball/harfbuzz/src/hb-ot-shape.cc:719:3
    >  hb_ot_shape_internal(hb_ot_shape_context_t*) workdir/UnpackedTarball/harfbuzz/src/hb-ot-shape.cc:768:3
    >  _hb_ot_shape workdir/UnpackedTarball/harfbuzz/src/hb-ot-shape.cc:792:3
    >  hb_shape_plan_execute workdir/UnpackedTarball/harfbuzz/src/./hb-shaper-list.hh:43:1
    >  CommonSalLayout::LayoutText(ImplLayoutArgs&) vcl/source/gdi/CommonSalLayout.cxx:485:23
    >  OutputDevice::ImplLayout(rtl::OUString const&, int, int, Point const&, long, long const*, SalLayoutFlags, vcl::TextLayoutCache const*) const vcl/source/outdev/text.cxx:1400:36
    >  OutputDevice::GetTextArray(rtl::OUString const&, long*, int, int, vcl::TextLayoutCache const*) const vcl/source/outdev/text.cxx:999:35
    >  OutputDevice::GetTextWidth(rtl::OUString const&, int, int, vcl::TextLayoutCache const*) const vcl/source/outdev/text.cxx:915:19
    >  ImplFontMetricData::ImplInitTextLineSize(OutputDevice const*) vcl/source/font/fontmetric.cxx:372:30
    >  OutputDevice::ImplNewFont() const vcl/source/outdev/font.cxx:1100:42
    >  OutputDevice::GetTextHeight() const vcl/source/outdev/text.cxx:924:14
    >  vcl::Window::ImplInitAppFontData(vcl::Window*) vcl/source/window/window.cxx:1177:33
    >  vcl::Window::ImplInit(vcl::Window*, long, SystemParentData*) vcl/source/window/window.cxx:1168:9
    >  ImplBorderWindow::ImplInit(vcl::Window*, long, BorderWindowStyle, SystemParentData*) vcl/source/window/brdwin.cxx:1758:13
    >  ImplBorderWindow::ImplBorderWindow(vcl::Window*, SystemParentData*, long, BorderWindowStyle) vcl/source/window/brdwin.cxx:1790:5
    >  VclPtrInstance<ImplBorderWindow>::VclPtrInstance<vcl::Window*&, SystemParentData*&, long&, BorderWindowStyle&>(vcl::Window*&, SystemParentData*&, long&, BorderWindowStyle&) include/vcl/vclptr.hxx:281:39
    >  WorkWindow::ImplInit(vcl::Window*, long, SystemParentData*) vcl/source/window/wrkwin.cxx:52:38
    >  WorkWindow::WorkWindow(vcl::Window*, long) vcl/source/window/wrkwin.cxx:95:5
    >  VclPtr<WorkWindow> VclPtr<WorkWindow>::Create<vcl::Window*&, long&>(vcl::Window*&, long&) include/vcl/vclptr.hxx:131:46
    >  (anonymous namespace)::VCLXToolkit::ImplCreateWindow(VCLXWindow**, com::sun::star::awt::WindowDescriptor const&, vcl::Window*, long) toolkit/source/awt/vclxtoolkit.cxx:1195:42
    >  (anonymous namespace)::VCLXToolkit::ImplCreateWindow(com::sun::star::awt::WindowDescriptor const&, long) toolkit/source/awt/vclxtoolkit.cxx:1306:22
    >  (anonymous namespace)::VCLXToolkit::createWindow(com::sun::star::awt::WindowDescriptor const&) toolkit/source/awt/vclxtoolkit.cxx:799:12
    >  non-virtual thunk to (anonymous namespace)::VCLXToolkit::createWindow(com::sun::star::awt::WindowDescriptor const&) toolkit/source/awt/vclxtoolkit.cxx:797:59
    >  (anonymous namespace)::TaskCreatorService::implts_createContainerWindow(com::sun::star::uno::Reference<com::sun::star::awt::XWindow> const&, com::sun::star::awt::Rectangle const&, bool) framework/source/services/taskcreatorsrv.cxx:268:73
    >  (anonymous namespace)::TaskCreatorService::createInstanceWithArguments(com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) framework/source/services/taskcreatorsrv.cxx:165:28
    >  non-virtual thunk to (anonymous namespace)::TaskCreatorService::createInstanceWithArguments(com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) framework/source/services/taskcreatorsrv.cxx:133:74
    >  framework::TaskCreator::createTask(rtl::OUString const&) framework/source/classes/taskcreator.cxx:112:63
    >  framework::Desktop::findFrame(rtl::OUString const&, int) framework/source/services/desktop.cxx:951:28
    >  non-virtual thunk to framework::Desktop::findFrame(rtl::OUString const&, int) framework/source/services/desktop.cxx:920:61
    >  framework::LoadEnv::impl_loadContent() framework/source/loadenv/loadenv.cxx:1017:50
    >  framework::LoadEnv::startLoading() framework/source/loadenv/loadenv.cxx:379:20
    >  framework::LoadEnv::loadComponentFromURL(com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) framework/source/loadenv/loadenv.cxx:165:14
    >  framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) framework/source/services/desktop.cxx:597:12
    >  non-virtual thunk to framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) framework/source/services/desktop.cxx:583:64
    >  (anonymous namespace)::LpSolverTest::setUp() sccomp/qa/unit/lpsolver.cxx:45:67
    ...
    
    Change-Id: If46d9b82225a70caa9ad2f17fbeb99c6adc63990

diff --git a/external/harfbuzz/ubsan.patch b/external/harfbuzz/ubsan.patch
index 1375c9d..8fa6abe 100644
--- a/external/harfbuzz/ubsan.patch
+++ b/external/harfbuzz/ubsan.patch
@@ -1,3 +1,14 @@
+--- src/hb-ot-font.cc
++++ src/hb-ot-font.cc
+@@ -125,7 +125,7 @@
+     if (glyph >= this->num_advances)
+       glyph = this->num_advances - 1;
+ 
+-    return this->table->longMetric[glyph].advance;
++    return static_cast<OT::LongMetric const *>(this->table->longMetric)[glyph].advance;
+   }
+ };
+ 
 --- src/hb-ot-map-private.hh
 +++ src/hb-ot-map-private.hh
 @@ -52,8 +52,11 @@


More information about the Libreoffice-commits mailing list