Hi,

On Sun, Mar 11, 2018 at 08:43:32AM +0100, Salvatore Bonaccorso wrote:
> CVE-2018-7999[0]:
> | In libgraphite2 in graphite2 1.3.11, a NULL pointer dereference
> | vulnerability was found in Segment.cpp during a dumbRendering
> | operation, which may allow attackers to cause a denial of service or
> | possibly have unspecified other impact via a crafted .ttf file.
> 
> If you fix the vulnerability please also make sure to include the
> CVE (Common Vulnerabilities & Exposures) id in your changelog entry.
> 
> For further information see:
> 
> [0] https://security-tracker.debian.org/tracker/CVE-2018-7999
>     https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7999
> [1] https://github.com/silnrsi/graphite/issues/22

upstream fix backported. Uploaded to sid.

Merged this for jessie and stretch, too. See attached debdiffs. Want me
to upload for a DSA?

(for the jessie branch I also had a embarassing typo fix pending.
Included. If I should remove that one I can, though, too)

Regards,

Rene
diff -Nru graphite2-1.3.10/debian/changelog graphite2-1.3.10/debian/changelog
--- graphite2-1.3.10/debian/changelog   2017-05-06 13:20:52.000000000 +0200
+++ graphite2-1.3.10/debian/changelog   2018-03-11 13:44:49.000000000 +0100
@@ -1,3 +1,10 @@
+graphite2 (1.3.10-1+deb9u1) stretch-security; urgency=medium
+
+  * backport upstream commit db132b4731a9b4c9534144ba3a18e65b390e9ff6
+    to fix CVE-2018-7999 (closes: #892590)
+
+ -- Rene Engelhard <r...@debian.org>  Sun, 11 Mar 2018 13:44:49 +0100
+
 graphite2 (1.3.10-1) unstable; urgency=medium
 
   * New upstream version 1.3.10
diff -Nru 
graphite2-1.3.10/debian/patches/db132b4731a9b4c9534144ba3a18e65b390e9ff6.diff 
graphite2-1.3.10/debian/patches/db132b4731a9b4c9534144ba3a18e65b390e9ff6.diff
--- 
graphite2-1.3.10/debian/patches/db132b4731a9b4c9534144ba3a18e65b390e9ff6.diff   
    1970-01-01 01:00:00.000000000 +0100
+++ 
graphite2-1.3.10/debian/patches/db132b4731a9b4c9534144ba3a18e65b390e9ff6.diff   
    2018-03-11 13:44:16.000000000 +0100
@@ -0,0 +1,221 @@
+diff --git a/include/graphite2/Font.h b/include/graphite2/Font.h
+index efe2af9f..a4e35243 100644
+--- a/include/graphite2/Font.h
++++ b/include/graphite2/Font.h
+@@ -56,7 +56,7 @@ GR2_API void gr_engine_version(int *nMajor, int *nMinor, int 
*nBugFix);
+ enum gr_face_options {
+     /** No preload, no cmap caching, fail if the graphite tables are invalid 
*/
+     gr_face_default = 0,
+-    /** Dumb rendering will be enabled if the graphite tables are invalid */
++    /** Dumb rendering will be enabled if the graphite tables are invalid. 
DEPRECATED. */
+     gr_face_dumbRendering = 1,
+     /** preload glyphs at construction time */
+     gr_face_preloadGlyphs = 2,
+diff --git a/src/GlyphCache.cpp b/src/GlyphCache.cpp
+index c4ab807b..1acf7f98 100644
+--- a/src/GlyphCache.cpp
++++ b/src/GlyphCache.cpp
+@@ -84,7 +84,7 @@ const SlantBox SlantBox::empty = {0,0,0,0};
+ class GlyphCache::Loader
+ {
+ public:
+-    Loader(const Face & face, const bool dumb_font);    //return result 
indicates success. Do not use if failed.
++    Loader(const Face & face);    //return result indicates success. Do not 
use if failed.
+ 
+     operator bool () const throw();
+     unsigned short int units_per_em() const throw();
+@@ -115,7 +115,7 @@ class GlyphCache::Loader
+ 
+ 
+ GlyphCache::GlyphCache(const Face & face, const uint32 face_options)
+-: _glyph_loader(new Loader(face, bool(face_options & gr_face_dumbRendering))),
++: _glyph_loader(new Loader(face)),
+   _glyphs(_glyph_loader && *_glyph_loader && _glyph_loader->num_glyphs()
+         ? grzeroalloc<const GlyphFace *>(_glyph_loader->num_glyphs()) : 0),
+   _boxes(_glyph_loader && _glyph_loader->has_boxes() && 
_glyph_loader->num_glyphs()
+@@ -239,7 +239,7 @@ const GlyphFace *GlyphCache::glyph(unsigned short glyphid) 
const      //result m
+ 
+ 
+ 
+-GlyphCache::Loader::Loader(const Face & face, const bool dumb_font)
++GlyphCache::Loader::Loader(const Face & face)
+ : _head(face, Tag::head),
+   _hhea(face, Tag::hhea),
+   _hmtx(face, Tag::hmtx),
+@@ -265,52 +265,49 @@ GlyphCache::Loader::Loader(const Face & face, const bool 
dumb_font)
+         return;
+     }
+ 
+-    if (!dumb_font)
++    if ((m_pGlat = Face::Table(face, Tag::Glat, 0x00030000)) == NULL
++        || (m_pGloc = Face::Table(face, Tag::Gloc)) == NULL
++        || m_pGloc.size() < 8)
+     {
+-        if ((m_pGlat = Face::Table(face, Tag::Glat, 0x00030000)) == NULL
+-            || (m_pGloc = Face::Table(face, Tag::Gloc)) == NULL
+-            || m_pGloc.size() < 8)
+-        {
+-            _head = Face::Table();
+-            return;
+-        }
+-        const byte    * p = m_pGloc;
+-        int       version = be::read<uint32>(p);
+-        const uint16    flags = be::read<uint16>(p);
+-        _num_attrs = be::read<uint16>(p);
+-        // We can accurately calculate the number of attributed glyphs by
+-        //  subtracting the length of the attribids array (numAttribs long if 
present)
+-        //  and dividing by either 2 or 4 depending on shor or lonf format
+-        _long_fmt              = flags & 1;
+-        int tmpnumgattrs       = (m_pGloc.size()
+-                                   - (p - m_pGloc)
+-                                   - sizeof(uint16)*(flags & 0x2 ? _num_attrs 
: 0))
+-                                       / (_long_fmt ? sizeof(uint32) : 
sizeof(uint16)) - 1;
+-
+-        if (version >= 0x00020000 || tmpnumgattrs < 0 || tmpnumgattrs > 65535
+-            || _num_attrs == 0 || _num_attrs > 0x3000  // is this hard limit 
appropriate?
+-            || _num_glyphs_graphics > tmpnumgattrs
+-            || m_pGlat.size() < 4)
+-        {
+-            _head = Face::Table();
+-            return;
+-        }
++        _head = Face::Table();
++        return;
++    }
++    const byte    * p = m_pGloc;
++    int       version = be::read<uint32>(p);
++    const uint16    flags = be::read<uint16>(p);
++    _num_attrs = be::read<uint16>(p);
++    // We can accurately calculate the number of attributed glyphs by
++    //  subtracting the length of the attribids array (numAttribs long if 
present)
++    //  and dividing by either 2 or 4 depending on shor or lonf format
++    _long_fmt              = flags & 1;
++    int tmpnumgattrs       = (m_pGloc.size()
++                               - (p - m_pGloc)
++                               - sizeof(uint16)*(flags & 0x2 ? _num_attrs : 
0))
++                                   / (_long_fmt ? sizeof(uint32) : 
sizeof(uint16)) - 1;
++
++    if (version >= 0x00020000 || tmpnumgattrs < 0 || tmpnumgattrs > 65535
++        || _num_attrs == 0 || _num_attrs > 0x3000  // is this hard limit 
appropriate?
++        || _num_glyphs_graphics > tmpnumgattrs
++        || m_pGlat.size() < 4)
++    {
++        _head = Face::Table();
++        return;
++    }
+ 
+-        _num_glyphs_attributes = static_cast<unsigned short>(tmpnumgattrs);
+-        p = m_pGlat;
+-        version = be::read<uint32>(p);
+-        if (version >= 0x00040000 || (version >= 0x00030000 && m_pGlat.size() 
< 8))       // reject Glat tables that are too new
+-        {
+-            _head = Face::Table();
+-            return;
+-        }
+-        else if (version >= 0x00030000)
+-        {
+-            unsigned int glatflags = be::read<uint32>(p);
+-            _has_boxes = glatflags & 1;
+-            // delete this once the compiler is fixed
+-            _has_boxes = true;
+-        }
++    _num_glyphs_attributes = static_cast<unsigned short>(tmpnumgattrs);
++    p = m_pGlat;
++    version = be::read<uint32>(p);
++    if (version >= 0x00040000 || (version >= 0x00030000 && m_pGlat.size() < 
8))       // reject Glat tables that are too new
++    {
++        _head = Face::Table();
++        return;
++    }
++    else if (version >= 0x00030000)
++    {
++        unsigned int glatflags = be::read<uint32>(p);
++        _has_boxes = glatflags & 1;
++        // delete this once the compiler is fixed
++        _has_boxes = true;
+     }
+ }
+ 
+diff --git a/src/gr_face.cpp b/src/gr_face.cpp
+index 65a4b117..e69c7fbe 100644
+--- a/src/gr_face.cpp
++++ b/src/gr_face.cpp
+@@ -47,8 +47,7 @@ namespace
+         telemetry::category _misc_cat(face.tele.misc);
+ #endif
+         Face::Table silf(face, Tag::Silf, 0x00050000);
+-        if (silf)   options &= ~gr_face_dumbRendering;
+-        else if (!(options &  gr_face_dumbRendering))
++        if (!silf)
+             return false;
+ 
+         if (!face.readGlyphs(options))
+@@ -74,7 +73,7 @@ namespace
+                 return true;
+         }
+         else
+-            return options & gr_face_dumbRendering;
++            return false;
+     }
+ }
+ 
+diff --git a/tests/featuremap/CMakeLists.txt b/tests/featuremap/CMakeLists.txt
+index fc57f96c..a438f66c 100644
+--- a/tests/featuremap/CMakeLists.txt
++++ b/tests/featuremap/CMakeLists.txt
+@@ -20,7 +20,7 @@ if (GRAPHITE2_ASAN)
+ endif (GRAPHITE2_ASAN)
+ target_link_libraries(featuremaptest graphite2 graphite2-base 
graphite2-segcache graphite2-base)
+ 
+-add_test(NAME featuremaptest COMMAND $<TARGET_FILE:featuremaptest> 
${testing_SOURCE_DIR}/fonts/tiny.ttf)
++add_test(NAME featuremaptest COMMAND $<TARGET_FILE:featuremaptest> 
${testing_SOURCE_DIR}/fonts/small.ttf)
+ set_tests_properties(featuremaptest PROPERTIES TIMEOUT 3)
+ if (GRAPHITE2_ASAN)
+     set_property(TEST featuremaptest APPEND PROPERTY ENVIRONMENT 
"ASAN_SYMBOLIZER_PATH=${ASAN_SYMBOLIZER}")
+diff --git a/tests/featuremap/featuremaptest.cpp 
b/tests/featuremap/featuremaptest.cpp
+index fcd9b873..a9aa497f 100644
+--- a/tests/featuremap/featuremaptest.cpp
++++ b/tests/featuremap/featuremaptest.cpp
+@@ -243,7 +243,7 @@ template <class T> void testFeatTable(const T & table, 
const char * testName)
+ {
+     FeatureMap testFeatureMap;
+     dummyFace.replace_table(TtfUtil::Tag::Feat, &table, sizeof(T));
+-    gr_face * face = gr_make_face_with_ops(&dummyFace, &face_handle::ops, 
gr_face_dumbRendering);
++    gr_face * face = gr_make_face_with_ops(&dummyFace, &face_handle::ops, 0);
+     if (!face) throw std::runtime_error("failed to load font");
+     bool readStatus = testFeatureMap.readFeats(*face);
+     testAssert("readFeats", readStatus);
+@@ -285,9 +285,8 @@ int main(int argc, char * argv[])
+               // test a bad settings offset stradling the end of the table
+               FeatureMap testFeatureMap;
+               dummyFace.replace_table(TtfUtil::Tag::Feat, &testBadOffset, 
sizeof testBadOffset);
+-              face = gr_make_face_with_ops(&dummyFace, &face_handle::ops, 
gr_face_dumbRendering);
+-              bool readStatus = testFeatureMap.readFeats(*face);
+-              testAssert("fail gracefully on bad table", !readStatus);
++              face = gr_make_face_with_ops(&dummyFace, &face_handle::ops, 0);
++              testAssert("fail gracefully on bad table", !face);
+       }
+       catch (std::exception & e)
+       {
+diff --git a/tests/vm/CMakeLists.txt b/tests/vm/CMakeLists.txt
+index 4a0b8231..24fbd3b8 100644
+--- a/tests/vm/CMakeLists.txt
++++ b/tests/vm/CMakeLists.txt
+@@ -41,7 +41,7 @@ if  (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+       endif ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
+ endif  (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES 
"k.*BSD" OR ${CMAKE_SYSTEM_NAME} STREQUAL "GNU")
+ 
+-add_test(vm-test-call-threading vm-test-call 
${testing_SOURCE_DIR}/fonts/tiny.ttf 1)
++add_test(vm-test-call-threading vm-test-call 
${testing_SOURCE_DIR}/fonts/small.ttf 1)
+ set_tests_properties(vm-test-call-threading PROPERTIES
+         PASS_REGULAR_EXPRESSION "simple program size:    14 bytes.*result of 
program: 42"
+         FAIL_REGULAR_EXPRESSION "program terminated early;stack not empty")
+@@ -51,7 +51,7 @@ if (GRAPHITE2_ASAN)
+ endif (GRAPHITE2_ASAN)
+ 
+ if  (${CMAKE_COMPILER_IS_GNUCXX})
+-      add_test(vm-test-direct-threading vm-test-direct 
${testing_SOURCE_DIR}/fonts/tiny.ttf 1)
++      add_test(vm-test-direct-threading vm-test-direct 
${testing_SOURCE_DIR}/fonts/small.ttf 1)
+       set_tests_properties(vm-test-direct-threading PROPERTIES
+                       PASS_REGULAR_EXPRESSION "simple program size:    14 
bytes.*result of program: 42"
+                       FAIL_REGULAR_EXPRESSION "program terminated early;stack 
not empty")
diff -Nru graphite2-1.3.10/debian/patches/series 
graphite2-1.3.10/debian/patches/series
--- graphite2-1.3.10/debian/patches/series      2017-05-06 13:20:52.000000000 
+0200
+++ graphite2-1.3.10/debian/patches/series      2018-03-11 13:44:49.000000000 
+0100
@@ -4,3 +4,4 @@
 no-icons.diff
 test-timeout.diff
 reproducible-build.diff
+db132b4731a9b4c9534144ba3a18e65b390e9ff6.diff
diff -Nru graphite2-1.3.10/debian/changelog graphite2-1.3.10/debian/changelog
--- graphite2-1.3.10/debian/changelog   2017-06-14 23:13:46.000000000 +0200
+++ graphite2-1.3.10/debian/changelog   2018-03-11 13:51:44.000000000 +0100
@@ -1,3 +1,10 @@
+graphite2 (1.3.10-1~deb8u2) jessie-security; urgency=medium
+
+  * backport upstream commit db132b4731a9b4c9534144ba3a18e65b390e9ff6
+    to fix CVE-2018-7999 (closes: #892590)
+
+ -- Rene Engelhard <r...@debian.org>  Sun, 11 Mar 2018 13:51:44 +0100
+
 graphite2 (1.3.10-1~deb8u1) jessie-security; urgency=high
 
   * rebuild for jessie-security
diff -Nru 
graphite2-1.3.10/debian/patches/db132b4731a9b4c9534144ba3a18e65b390e9ff6.diff 
graphite2-1.3.10/debian/patches/db132b4731a9b4c9534144ba3a18e65b390e9ff6.diff
--- 
graphite2-1.3.10/debian/patches/db132b4731a9b4c9534144ba3a18e65b390e9ff6.diff   
    1970-01-01 01:00:00.000000000 +0100
+++ 
graphite2-1.3.10/debian/patches/db132b4731a9b4c9534144ba3a18e65b390e9ff6.diff   
    2018-03-11 13:50:58.000000000 +0100
@@ -0,0 +1,221 @@
+diff --git a/include/graphite2/Font.h b/include/graphite2/Font.h
+index efe2af9f..a4e35243 100644
+--- a/include/graphite2/Font.h
++++ b/include/graphite2/Font.h
+@@ -56,7 +56,7 @@ GR2_API void gr_engine_version(int *nMajor, int *nMinor, int 
*nBugFix);
+ enum gr_face_options {
+     /** No preload, no cmap caching, fail if the graphite tables are invalid 
*/
+     gr_face_default = 0,
+-    /** Dumb rendering will be enabled if the graphite tables are invalid */
++    /** Dumb rendering will be enabled if the graphite tables are invalid. 
DEPRECATED. */
+     gr_face_dumbRendering = 1,
+     /** preload glyphs at construction time */
+     gr_face_preloadGlyphs = 2,
+diff --git a/src/GlyphCache.cpp b/src/GlyphCache.cpp
+index c4ab807b..1acf7f98 100644
+--- a/src/GlyphCache.cpp
++++ b/src/GlyphCache.cpp
+@@ -84,7 +84,7 @@ const SlantBox SlantBox::empty = {0,0,0,0};
+ class GlyphCache::Loader
+ {
+ public:
+-    Loader(const Face & face, const bool dumb_font);    //return result 
indicates success. Do not use if failed.
++    Loader(const Face & face);    //return result indicates success. Do not 
use if failed.
+ 
+     operator bool () const throw();
+     unsigned short int units_per_em() const throw();
+@@ -115,7 +115,7 @@ class GlyphCache::Loader
+ 
+ 
+ GlyphCache::GlyphCache(const Face & face, const uint32 face_options)
+-: _glyph_loader(new Loader(face, bool(face_options & gr_face_dumbRendering))),
++: _glyph_loader(new Loader(face)),
+   _glyphs(_glyph_loader && *_glyph_loader && _glyph_loader->num_glyphs()
+         ? grzeroalloc<const GlyphFace *>(_glyph_loader->num_glyphs()) : 0),
+   _boxes(_glyph_loader && _glyph_loader->has_boxes() && 
_glyph_loader->num_glyphs()
+@@ -239,7 +239,7 @@ const GlyphFace *GlyphCache::glyph(unsigned short glyphid) 
const      //result m
+ 
+ 
+ 
+-GlyphCache::Loader::Loader(const Face & face, const bool dumb_font)
++GlyphCache::Loader::Loader(const Face & face)
+ : _head(face, Tag::head),
+   _hhea(face, Tag::hhea),
+   _hmtx(face, Tag::hmtx),
+@@ -265,52 +265,49 @@ GlyphCache::Loader::Loader(const Face & face, const bool 
dumb_font)
+         return;
+     }
+ 
+-    if (!dumb_font)
++    if ((m_pGlat = Face::Table(face, Tag::Glat, 0x00030000)) == NULL
++        || (m_pGloc = Face::Table(face, Tag::Gloc)) == NULL
++        || m_pGloc.size() < 8)
+     {
+-        if ((m_pGlat = Face::Table(face, Tag::Glat, 0x00030000)) == NULL
+-            || (m_pGloc = Face::Table(face, Tag::Gloc)) == NULL
+-            || m_pGloc.size() < 8)
+-        {
+-            _head = Face::Table();
+-            return;
+-        }
+-        const byte    * p = m_pGloc;
+-        int       version = be::read<uint32>(p);
+-        const uint16    flags = be::read<uint16>(p);
+-        _num_attrs = be::read<uint16>(p);
+-        // We can accurately calculate the number of attributed glyphs by
+-        //  subtracting the length of the attribids array (numAttribs long if 
present)
+-        //  and dividing by either 2 or 4 depending on shor or lonf format
+-        _long_fmt              = flags & 1;
+-        int tmpnumgattrs       = (m_pGloc.size()
+-                                   - (p - m_pGloc)
+-                                   - sizeof(uint16)*(flags & 0x2 ? _num_attrs 
: 0))
+-                                       / (_long_fmt ? sizeof(uint32) : 
sizeof(uint16)) - 1;
+-
+-        if (version >= 0x00020000 || tmpnumgattrs < 0 || tmpnumgattrs > 65535
+-            || _num_attrs == 0 || _num_attrs > 0x3000  // is this hard limit 
appropriate?
+-            || _num_glyphs_graphics > tmpnumgattrs
+-            || m_pGlat.size() < 4)
+-        {
+-            _head = Face::Table();
+-            return;
+-        }
++        _head = Face::Table();
++        return;
++    }
++    const byte    * p = m_pGloc;
++    int       version = be::read<uint32>(p);
++    const uint16    flags = be::read<uint16>(p);
++    _num_attrs = be::read<uint16>(p);
++    // We can accurately calculate the number of attributed glyphs by
++    //  subtracting the length of the attribids array (numAttribs long if 
present)
++    //  and dividing by either 2 or 4 depending on shor or lonf format
++    _long_fmt              = flags & 1;
++    int tmpnumgattrs       = (m_pGloc.size()
++                               - (p - m_pGloc)
++                               - sizeof(uint16)*(flags & 0x2 ? _num_attrs : 
0))
++                                   / (_long_fmt ? sizeof(uint32) : 
sizeof(uint16)) - 1;
++
++    if (version >= 0x00020000 || tmpnumgattrs < 0 || tmpnumgattrs > 65535
++        || _num_attrs == 0 || _num_attrs > 0x3000  // is this hard limit 
appropriate?
++        || _num_glyphs_graphics > tmpnumgattrs
++        || m_pGlat.size() < 4)
++    {
++        _head = Face::Table();
++        return;
++    }
+ 
+-        _num_glyphs_attributes = static_cast<unsigned short>(tmpnumgattrs);
+-        p = m_pGlat;
+-        version = be::read<uint32>(p);
+-        if (version >= 0x00040000 || (version >= 0x00030000 && m_pGlat.size() 
< 8))       // reject Glat tables that are too new
+-        {
+-            _head = Face::Table();
+-            return;
+-        }
+-        else if (version >= 0x00030000)
+-        {
+-            unsigned int glatflags = be::read<uint32>(p);
+-            _has_boxes = glatflags & 1;
+-            // delete this once the compiler is fixed
+-            _has_boxes = true;
+-        }
++    _num_glyphs_attributes = static_cast<unsigned short>(tmpnumgattrs);
++    p = m_pGlat;
++    version = be::read<uint32>(p);
++    if (version >= 0x00040000 || (version >= 0x00030000 && m_pGlat.size() < 
8))       // reject Glat tables that are too new
++    {
++        _head = Face::Table();
++        return;
++    }
++    else if (version >= 0x00030000)
++    {
++        unsigned int glatflags = be::read<uint32>(p);
++        _has_boxes = glatflags & 1;
++        // delete this once the compiler is fixed
++        _has_boxes = true;
+     }
+ }
+ 
+diff --git a/src/gr_face.cpp b/src/gr_face.cpp
+index 65a4b117..e69c7fbe 100644
+--- a/src/gr_face.cpp
++++ b/src/gr_face.cpp
+@@ -47,8 +47,7 @@ namespace
+         telemetry::category _misc_cat(face.tele.misc);
+ #endif
+         Face::Table silf(face, Tag::Silf, 0x00050000);
+-        if (silf)   options &= ~gr_face_dumbRendering;
+-        else if (!(options &  gr_face_dumbRendering))
++        if (!silf)
+             return false;
+ 
+         if (!face.readGlyphs(options))
+@@ -74,7 +73,7 @@ namespace
+                 return true;
+         }
+         else
+-            return options & gr_face_dumbRendering;
++            return false;
+     }
+ }
+ 
+diff --git a/tests/featuremap/CMakeLists.txt b/tests/featuremap/CMakeLists.txt
+index fc57f96c..a438f66c 100644
+--- a/tests/featuremap/CMakeLists.txt
++++ b/tests/featuremap/CMakeLists.txt
+@@ -20,7 +20,7 @@ if (GRAPHITE2_ASAN)
+ endif (GRAPHITE2_ASAN)
+ target_link_libraries(featuremaptest graphite2 graphite2-base 
graphite2-segcache graphite2-base)
+ 
+-add_test(NAME featuremaptest COMMAND $<TARGET_FILE:featuremaptest> 
${testing_SOURCE_DIR}/fonts/tiny.ttf)
++add_test(NAME featuremaptest COMMAND $<TARGET_FILE:featuremaptest> 
${testing_SOURCE_DIR}/fonts/small.ttf)
+ set_tests_properties(featuremaptest PROPERTIES TIMEOUT 3)
+ if (GRAPHITE2_ASAN)
+     set_property(TEST featuremaptest APPEND PROPERTY ENVIRONMENT 
"ASAN_SYMBOLIZER_PATH=${ASAN_SYMBOLIZER}")
+diff --git a/tests/featuremap/featuremaptest.cpp 
b/tests/featuremap/featuremaptest.cpp
+index fcd9b873..a9aa497f 100644
+--- a/tests/featuremap/featuremaptest.cpp
++++ b/tests/featuremap/featuremaptest.cpp
+@@ -243,7 +243,7 @@ template <class T> void testFeatTable(const T & table, 
const char * testName)
+ {
+     FeatureMap testFeatureMap;
+     dummyFace.replace_table(TtfUtil::Tag::Feat, &table, sizeof(T));
+-    gr_face * face = gr_make_face_with_ops(&dummyFace, &face_handle::ops, 
gr_face_dumbRendering);
++    gr_face * face = gr_make_face_with_ops(&dummyFace, &face_handle::ops, 0);
+     if (!face) throw std::runtime_error("failed to load font");
+     bool readStatus = testFeatureMap.readFeats(*face);
+     testAssert("readFeats", readStatus);
+@@ -285,9 +285,8 @@ int main(int argc, char * argv[])
+               // test a bad settings offset stradling the end of the table
+               FeatureMap testFeatureMap;
+               dummyFace.replace_table(TtfUtil::Tag::Feat, &testBadOffset, 
sizeof testBadOffset);
+-              face = gr_make_face_with_ops(&dummyFace, &face_handle::ops, 
gr_face_dumbRendering);
+-              bool readStatus = testFeatureMap.readFeats(*face);
+-              testAssert("fail gracefully on bad table", !readStatus);
++              face = gr_make_face_with_ops(&dummyFace, &face_handle::ops, 0);
++              testAssert("fail gracefully on bad table", !face);
+       }
+       catch (std::exception & e)
+       {
+diff --git a/tests/vm/CMakeLists.txt b/tests/vm/CMakeLists.txt
+index 4a0b8231..24fbd3b8 100644
+--- a/tests/vm/CMakeLists.txt
++++ b/tests/vm/CMakeLists.txt
+@@ -41,7 +41,7 @@ if  (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+       endif ("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
+ endif  (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES 
"k.*BSD" OR ${CMAKE_SYSTEM_NAME} STREQUAL "GNU")
+ 
+-add_test(vm-test-call-threading vm-test-call 
${testing_SOURCE_DIR}/fonts/tiny.ttf 1)
++add_test(vm-test-call-threading vm-test-call 
${testing_SOURCE_DIR}/fonts/small.ttf 1)
+ set_tests_properties(vm-test-call-threading PROPERTIES
+         PASS_REGULAR_EXPRESSION "simple program size:    14 bytes.*result of 
program: 42"
+         FAIL_REGULAR_EXPRESSION "program terminated early;stack not empty")
+@@ -51,7 +51,7 @@ if (GRAPHITE2_ASAN)
+ endif (GRAPHITE2_ASAN)
+ 
+ if  (${CMAKE_COMPILER_IS_GNUCXX})
+-      add_test(vm-test-direct-threading vm-test-direct 
${testing_SOURCE_DIR}/fonts/tiny.ttf 1)
++      add_test(vm-test-direct-threading vm-test-direct 
${testing_SOURCE_DIR}/fonts/small.ttf 1)
+       set_tests_properties(vm-test-direct-threading PROPERTIES
+                       PASS_REGULAR_EXPRESSION "simple program size:    14 
bytes.*result of program: 42"
+                       FAIL_REGULAR_EXPRESSION "program terminated early;stack 
not empty")
diff -Nru graphite2-1.3.10/debian/patches/do-not-require-ss2.diff 
graphite2-1.3.10/debian/patches/do-not-require-ss2.diff
--- graphite2-1.3.10/debian/patches/do-not-require-ss2.diff     2017-05-06 
13:19:45.000000000 +0200
+++ graphite2-1.3.10/debian/patches/do-not-require-ss2.diff     1970-01-01 
01:00:00.000000000 +0100
@@ -1,23 +0,0 @@
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 08e1c8f..4f1e7e5 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -111,9 +111,6 @@ if  (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
-         COMPILE_FLAGS   "-Wall -Wextra -Wno-unknown-pragmas -Wendif-labels 
-Wshadow -Wctor-dtor-privacy -Wnon-virtual-dtor -fno-rtti -fno-exceptions 
-fvisibility=hidden -fvisibility-inlines-hidden -fno-stack-protector"
-         LINK_FLAGS      "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}" 
-         LINKER_LANGUAGE C)
--    if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86")
--        add_definitions(-mfpmath=sse -msse2)
--    endif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86")
-     if (CMAKE_COMPILER_IS_GNUCXX)
-         add_definitions(-Wdouble-promotion)
-     endif (CMAKE_COMPILER_IS_GNUCXX)
-@@ -138,7 +135,7 @@ endif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
- 
- if  (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
-     set_target_properties(graphite2 PROPERTIES 
--        COMPILE_FLAGS   "-Wall -Wextra -Wno-unknown-pragmas 
-Wimplicit-fallthrough -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy 
-Wno-non-virtual-dtor -fno-rtti -fno-exceptions -fvisibility=hidden 
-fvisibility-inlines-hidden -fno-stack-protector -mfpmath=sse -msse2"
-+        COMPILE_FLAGS   "-Wall -Wextra -Wno-unknown-pragmas 
-Wimplicit-fallthrough -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy 
-Wno-non-virtual-dtor -fno-rtti -fno-exceptions -fvisibility=hidden 
-fvisibility-inlines-hidden -fno-stack-protector"
-         LINK_FLAGS      "-nodefaultlibs" 
-         LINKER_LANGUAGE C)
-     target_link_libraries(graphite2 c)
diff -Nru graphite2-1.3.10/debian/patches/do-not-require-sse2.diff 
graphite2-1.3.10/debian/patches/do-not-require-sse2.diff
--- graphite2-1.3.10/debian/patches/do-not-require-sse2.diff    1970-01-01 
01:00:00.000000000 +0100
+++ graphite2-1.3.10/debian/patches/do-not-require-sse2.diff    2018-03-11 
13:50:52.000000000 +0100
@@ -0,0 +1,23 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 08e1c8f..4f1e7e5 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -111,9 +111,6 @@ if  (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+         COMPILE_FLAGS   "-Wall -Wextra -Wno-unknown-pragmas -Wendif-labels 
-Wshadow -Wctor-dtor-privacy -Wnon-virtual-dtor -fno-rtti -fno-exceptions 
-fvisibility=hidden -fvisibility-inlines-hidden -fno-stack-protector"
+         LINK_FLAGS      "-nodefaultlibs ${GRAPHITE_LINK_FLAGS}" 
+         LINKER_LANGUAGE C)
+-    if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86")
+-        add_definitions(-mfpmath=sse -msse2)
+-    endif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86")
+     if (CMAKE_COMPILER_IS_GNUCXX)
+         add_definitions(-Wdouble-promotion)
+     endif (CMAKE_COMPILER_IS_GNUCXX)
+@@ -138,7 +135,7 @@ endif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+ 
+ if  (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
+     set_target_properties(graphite2 PROPERTIES 
+-        COMPILE_FLAGS   "-Wall -Wextra -Wno-unknown-pragmas 
-Wimplicit-fallthrough -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy 
-Wno-non-virtual-dtor -fno-rtti -fno-exceptions -fvisibility=hidden 
-fvisibility-inlines-hidden -fno-stack-protector -mfpmath=sse -msse2"
++        COMPILE_FLAGS   "-Wall -Wextra -Wno-unknown-pragmas 
-Wimplicit-fallthrough -Wendif-labels -Wshadow -Wno-ctor-dtor-privacy 
-Wno-non-virtual-dtor -fno-rtti -fno-exceptions -fvisibility=hidden 
-fvisibility-inlines-hidden -fno-stack-protector"
+         LINK_FLAGS      "-nodefaultlibs" 
+         LINKER_LANGUAGE C)
+     target_link_libraries(graphite2 c)
diff -Nru graphite2-1.3.10/debian/patches/series 
graphite2-1.3.10/debian/patches/series
--- graphite2-1.3.10/debian/patches/series      2017-05-06 13:20:52.000000000 
+0200
+++ graphite2-1.3.10/debian/patches/series      2018-03-11 13:50:58.000000000 
+0100
@@ -1,6 +1,7 @@
-do-not-require-ss2.diff
+do-not-require-sse2.diff
 ffloat-store.diff
 non-linux.diff
 no-icons.diff
 test-timeout.diff
 reproducible-build.diff
+db132b4731a9b4c9534144ba3a18e65b390e9ff6.diff

Reply via email to