diff --git a/graphite2-1.3.11.tar.gz b/graphite2-1.3.11.tar.gz deleted file mode 100644 index a15e96f..0000000 --- a/graphite2-1.3.11.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:945c01d3647b355d68e5541773fc99a7f29ede6a264bcbd735156a7c493459ff -size 4236768 diff --git a/graphite2-1.3.12.tar.gz b/graphite2-1.3.12.tar.gz new file mode 100644 index 0000000..3e56f9c --- /dev/null +++ b/graphite2-1.3.12.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b90cff3e64a37dd4f6fa4ac46c7634f8707601a8b4478f8501c74d3be774366 +size 6667278 diff --git a/graphite2-CVE-2018-7999.patch b/graphite2-CVE-2018-7999.patch deleted file mode 100644 index cbefb32..0000000 --- a/graphite2-CVE-2018-7999.patch +++ /dev/null @@ -1,220 +0,0 @@ ---- 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(_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(p); -- const uint16 flags = be::read(p); -- _num_attrs = be::read(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(p); -+ const uint16 flags = be::read(p); -+ _num_attrs = be::read(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(tmpnumgattrs); -- p = m_pGlat; -- version = be::read(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(p); -- _has_boxes = glatflags & 1; -- // delete this once the compiler is fixed -- _has_boxes = true; -- } -+ _num_glyphs_attributes = static_cast(tmpnumgattrs); -+ p = m_pGlat; -+ version = be::read(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(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 $ ${testing_SOURCE_DIR}/fonts/tiny.ttf) -+add_test(NAME featuremaptest COMMAND $ ${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 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") - --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 --git a/graphite2.changes b/graphite2.changes index 0111f48..6045a66 100644 --- a/graphite2.changes +++ b/graphite2.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Thu Oct 25 08:08:51 UTC 2018 - Petr Gajdos + +- Update to 1.3.12: + . Graphite no longer does dumb rendering for fonts with no smarts + . Segment caching code removed. Anything attempting to use the + segment cache gets given a regular face instead + . Add libfuzzer support + . Builds now require C++11 + . Improvements to Windows 64 bit builds + . Support different versions of python including 32 bit and python 3 + . Various minor bug fixes +- refreshed patch + % link-gcc-shared.diff +- removed patch + - graphite2-CVE-2018-7999.patch (upstreamed) + ------------------------------------------------------------------- Fri Mar 16 12:58:15 UTC 2018 - tchvatal@suse.com diff --git a/graphite2.spec b/graphite2.spec index 30cd113..0a97974 100644 --- a/graphite2.spec +++ b/graphite2.spec @@ -12,13 +12,13 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # %define libname libgraphite2-3 Name: graphite2 -Version: 1.3.11 +Version: 1.3.12 Release: 0 Summary: Font rendering capabilities for complex non-Roman writing systems License: LGPL-2.1-or-later OR MPL-2.0+ @@ -28,7 +28,6 @@ Source0: https://github.com/silnrsi/graphite/archive/%{version}.tar.gz#/% Source1: baselibs.conf Patch0: graphite2-1.2.0-cmakepath.patch Patch2: link-gcc-shared.diff -Patch3: graphite2-CVE-2018-7999.patch BuildRequires: cmake BuildRequires: fontconfig-devel BuildRequires: freetype2-devel @@ -77,7 +76,6 @@ This package contains the %{name} development files. %setup -q -n graphite-%{version} %patch0 -p1 %patch2 -p1 -%patch3 -p1 # Make sure to use python3 everywhere find tests -type f -exec sed -i "s|python|python3|g" {} + @@ -102,7 +100,7 @@ find %{buildroot} -type f -name "*.la" -delete -print # exclude tests based on fonttool cd build ctest --output-on-failure --force-new-ctest-process %{?_smp_mflags} \ - -E "padaukcmp1|chariscmp1|chariscmp2|annacmp1|schercmp1|awamicmp1|awamicmp2" + -E "padaukcmp1|chariscmp1|chariscmp2|annacmp1|schercmp1|awamicmp1|awamicmp2|awamicmp3" %post -n %{libname} -p /sbin/ldconfig %postun -n %{libname} -p /sbin/ldconfig diff --git a/link-gcc-shared.diff b/link-gcc-shared.diff index 264592b..fed5d21 100644 --- a/link-gcc-shared.diff +++ b/link-gcc-shared.diff @@ -1,13 +1,13 @@ -Index: graphite-1.3.11/src/CMakeLists.txt +Index: graphite-1.3.12/src/CMakeLists.txt =================================================================== ---- graphite-1.3.11.orig/src/CMakeLists.txt 2018-03-12 14:07:16.947663510 +0100 -+++ graphite-1.3.11/src/CMakeLists.txt 2018-03-12 14:07:16.959663721 +0100 -@@ -131,7 +131,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linu - if (GRAPHITE2_ASAN) +--- graphite-1.3.12.orig/src/CMakeLists.txt 2018-10-25 10:06:19.438425490 +0200 ++++ graphite-1.3.12/src/CMakeLists.txt 2018-10-25 10:07:57.506879853 +0200 +@@ -123,7 +123,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linu + if (GRAPHITE2_SANITIZERS) target_link_libraries(graphite2 c gcc_s) - else (GRAPHITE2_ASAN) + else () - target_link_libraries(graphite2 c gcc) + target_link_libraries(graphite2 c gcc_s) - endif (GRAPHITE2_ASAN) - include(Graphite) - if (BUILD_SHARED_LIBS) + endif () + endif (${CMAKE_CXX_COMPILER} MATCHES ".*mingw.*") + include(Graphite)