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

New commits:
commit 99f7aacd5b39a0f79351d8d7568b2e43d39878cb
Author: Stephan Bergmann <sberg...@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 <sberg...@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 @@
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to