[HarfBuzz] harfbuzz: Branch 'master'

Behdad Esfahbod behdad at kemper.freedesktop.org
Mon Nov 5 20:03:43 UTC 2018


 test/api/test-ot-face.c         |   57 ++++++++++++++++++++--------------------
 test/fuzzing/hb-shape-fuzzer.cc |   19 -------------
 2 files changed, 30 insertions(+), 46 deletions(-)

New commits:
commit 6482fda519ca7d173e3bcb3717aa30e237f04b25
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Mon Nov 5 15:03:18 2018 -0500

    [fuzzing] Fuzz glyph-id etc in test-ot-face

diff --git a/test/api/test-ot-face.c b/test/api/test-ot-face.c
index da23fe59..d6eefbaa 100644
--- a/test/api/test-ot-face.c
+++ b/test/api/test-ot-face.c
@@ -33,7 +33,8 @@
 
 
 static void
-test_face (hb_face_t *face)
+test_face (hb_face_t *face,
+	   hb_codepoint_t cp)
 {
   hb_font_t *font = hb_font_create (face);
   hb_ot_font_set_funcs (font);
@@ -41,35 +42,35 @@ test_face (hb_face_t *face)
   hb_set_t *set = hb_set_create ();
   hb_face_collect_unicodes (face, set);
   hb_face_collect_variation_selectors (face, set);
-  hb_face_collect_variation_unicodes (face, 0, set);
+  hb_face_collect_variation_unicodes (face, cp, set);
 
   hb_codepoint_t g;
   hb_position_t x, y;
   hb_glyph_extents_t extents;
   char buf[5] = {0};
-  hb_font_get_nominal_glyph (font, 0, &g);
-  hb_font_get_variation_glyph (font, 0, 0, &g);
-  hb_font_get_glyph_h_advance (font, g);
-  hb_font_get_glyph_v_advance (font, g);
-  hb_font_get_glyph_h_origin (font, g, &x, &y);
-  hb_font_get_glyph_v_origin (font, g, &x, &y);
-  hb_font_get_glyph_extents (font, g, &extents);
-  hb_font_get_glyph_contour_point (font, g, 0, &x, &y);
-  hb_font_get_glyph_name (font, g, buf, sizeof (buf));
+  hb_font_get_nominal_glyph (font, cp, &g);
+  hb_font_get_variation_glyph (font, cp, cp, &g);
+  hb_font_get_glyph_h_advance (font, cp);
+  hb_font_get_glyph_v_advance (font, cp);
+  hb_font_get_glyph_h_origin (font, cp, &x, &y);
+  hb_font_get_glyph_v_origin (font, cp, &x, &y);
+  hb_font_get_glyph_extents (font, cp, &extents);
+  hb_font_get_glyph_contour_point (font, cp, 0, &x, &y);
+  hb_font_get_glyph_name (font, cp, buf, sizeof (buf));
   hb_font_get_glyph_from_name (font, buf, strlen (buf), &g);
 
   hb_ot_color_has_palettes (face);
   hb_ot_color_palette_get_count (face);
-  hb_ot_color_palette_get_name_id (face, 0);
-  hb_ot_color_palette_color_get_name_id (face, 0);
-  hb_ot_color_palette_get_flags (face, 0);
-  hb_ot_color_palette_get_colors (face, 0, 0, NULL, NULL);
+  hb_ot_color_palette_get_name_id (face, cp);
+  hb_ot_color_palette_color_get_name_id (face, cp);
+  hb_ot_color_palette_get_flags (face, cp);
+  hb_ot_color_palette_get_colors (face, cp, 0, NULL, NULL);
   hb_ot_color_has_layers (face);
-  hb_ot_color_glyph_get_layers (face, 0, 0, NULL, NULL);
+  hb_ot_color_glyph_get_layers (face, cp, 0, NULL, NULL);
   hb_ot_color_has_svg (face);
-  hb_blob_destroy (hb_ot_color_glyph_reference_svg (face, 0));
+  hb_blob_destroy (hb_ot_color_glyph_reference_svg (face, cp));
   hb_ot_color_has_png (face);
-  hb_blob_destroy (hb_ot_color_glyph_reference_png (font, 0));
+  hb_blob_destroy (hb_ot_color_glyph_reference_png (font, cp));
 
   hb_ot_layout_has_glyph_classes (face);
   hb_ot_layout_has_substitution (face);
@@ -77,19 +78,19 @@ test_face (hb_face_t *face)
 
   hb_ot_math_has_data (face);
   hb_ot_math_get_constant (font, HB_OT_MATH_CONSTANT_MATH_LEADING);
-  hb_ot_math_get_glyph_italics_correction (font, 0);
-  hb_ot_math_get_glyph_top_accent_attachment (font, 0);
-  hb_ot_math_is_glyph_extended_shape (face, 0);
-  hb_ot_math_get_glyph_kerning (font, 0, HB_OT_MATH_KERN_BOTTOM_RIGHT, 0);
-  hb_ot_math_get_glyph_variants (font, 0, HB_DIRECTION_TTB, 0, NULL, NULL);
+  hb_ot_math_get_glyph_italics_correction (font, cp);
+  hb_ot_math_get_glyph_top_accent_attachment (font, cp);
+  hb_ot_math_is_glyph_extended_shape (face, cp);
+  hb_ot_math_get_glyph_kerning (font, cp, HB_OT_MATH_KERN_BOTTOM_RIGHT, 0);
+  hb_ot_math_get_glyph_variants (font, cp, HB_DIRECTION_TTB, 0, NULL, NULL);
   hb_ot_math_get_min_connector_overlap (font, HB_DIRECTION_RTL);
-  hb_ot_math_get_glyph_assembly (font, 0, HB_DIRECTION_BTT, 0, NULL, NULL, NULL);
+  hb_ot_math_get_glyph_assembly (font, cp, HB_DIRECTION_BTT, 0, NULL, NULL, NULL);
 
   unsigned int len = sizeof (buf);
   hb_ot_name_list_names (face, NULL);
-  hb_ot_name_get_utf8 (face, 0, NULL, &len, buf);
-  hb_ot_name_get_utf16 (face, 0, NULL, NULL, NULL);
-  hb_ot_name_get_utf32 (face, 0, NULL, NULL, NULL);
+  hb_ot_name_get_utf8 (face, cp, NULL, &len, buf);
+  hb_ot_name_get_utf16 (face, cp, NULL, NULL, NULL);
+  hb_ot_name_get_utf32 (face, cp, NULL, NULL, NULL);
 
   hb_ot_var_get_axis_count (face);
   hb_ot_var_get_axes (face, 0, NULL, NULL);
@@ -104,7 +105,7 @@ test_face (hb_face_t *face)
 static void
 test_ot_face_empty (void)
 {
-  test_face (hb_face_get_empty ());
+  test_face (hb_face_get_empty (), 0);
 }
 
 int
diff --git a/test/fuzzing/hb-shape-fuzzer.cc b/test/fuzzing/hb-shape-fuzzer.cc
index fedf56e2..ec69d514 100644
--- a/test/fuzzing/hb-shape-fuzzer.cc
+++ b/test/fuzzing/hb-shape-fuzzer.cc
@@ -32,28 +32,11 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
     hb_buffer_add_utf32 (buffer, text32, sizeof (text32) / sizeof (text32[0]), 0, -1);
     hb_buffer_guess_segment_properties (buffer);
     hb_shape (font, buffer, NULL, 0);
-
-    unsigned int len = hb_buffer_get_length (buffer);
-    hb_glyph_info_t *infos = hb_buffer_get_glyph_infos (buffer, NULL);
-    //hb_glyph_position_t *positions = hb_buffer_get_glyph_positions (buffer, NULL);
-    for (unsigned int i = 0; i < len; i++)
-    {
-      hb_glyph_info_t info = infos[i];
-      //hb_glyph_position_t pos = positions[i];
-
-      hb_glyph_extents_t extents;
-      hb_font_get_glyph_extents (font, info.codepoint, &extents);
-
-      hb_ot_color_glyph_get_layers (face, info.codepoint, 0, nullptr, nullptr);
-      hb_blob_destroy (hb_ot_color_glyph_reference_svg (face, info.codepoint));
-      hb_blob_destroy (hb_ot_color_glyph_reference_png (font, info.codepoint));
-    }
-
     hb_buffer_destroy (buffer);
   }
 
   /* Misc calls on face. */
-  test_face (face);
+  test_face (face, text32[15]);
 
   hb_font_destroy (font);
   hb_face_destroy (face);


More information about the HarfBuzz mailing list