shithub: freetype+ttf2subf

Download patch

ref: ef48a332712ab4b3b509a3a2f2f045763c238b61
parent: cddfe6574b1f96104b7c89bdc1979b54d69ba3e0
author: Werner Lemberg <wl@gnu.org>
date: Sun Jan 23 14:05:15 EST 2022

* src/svg/ftsvg.c (ft_svg_property_set): Disallow NULL pointers.

git/fs: mount .git/fs: mount/attach disallowed
--- a/include/freetype/otsvg.h
+++ b/include/freetype/otsvg.h
@@ -223,6 +223,8 @@
    *   For example, in the preset hook one can draw the glyph on a recorder
    *   surface and later create a bitmap surface from it in the render hook.
    *
+   *   All four hooks must be non-NULL.
+   *
    * @fields:
    *   init_svg ::
    *     The initialization hook.
--- a/src/svg/ftsvg.c
+++ b/src/svg/ftsvg.c
@@ -168,10 +168,27 @@
 
 
       if ( value_is_string == TRUE )
-        return FT_THROW( Invalid_Argument );
+      {
+        error = FT_THROW( Invalid_Argument );
+        goto Exit;
+      }
 
       hooks = (SVG_RendererHooks*)value;
 
+      if ( !hooks->init_svg    ||
+           !hooks->free_svg    ||
+           !hooks->render_svg  ||
+           !hooks->preset_slot )
+      {
+        FT_TRACE0(( "ft_svg_property_set:"
+                    " SVG rendering hooks not set because\n" ));
+        FT_TRACE0(( "                    "
+                    " at least one function pointer is NULL\n" ));
+
+        error = FT_THROW( Invalid_Argument );
+        goto Exit;
+      }
+
       renderer->hooks     = *hooks;
       renderer->hooks_set = TRUE;
     }
@@ -178,6 +195,7 @@
     else
       error = FT_THROW( Missing_Property );
 
+  Exit:
     return error;
   }