ref: ef48a332712ab4b3b509a3a2f2f045763c238b61
parent: cddfe6574b1f96104b7c89bdc1979b54d69ba3e0
author: Werner Lemberg <[email protected]>
date: Sun Jan 23 14:05:15 EST 2022
* src/svg/ftsvg.c (ft_svg_property_set): Disallow NULL pointers.
--- 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;
}