diff options
Diffstat (limited to 'external/freetype/ubsan.patch')
-rw-r--r-- | external/freetype/ubsan.patch | 135 |
1 files changed, 22 insertions, 113 deletions
diff --git a/external/freetype/ubsan.patch b/external/freetype/ubsan.patch index 27a36eb880bd..43ce217c4b7d 100644 --- a/external/freetype/ubsan.patch +++ b/external/freetype/ubsan.patch @@ -1,114 +1,23 @@ ---- src/autofit/afcjk.c -+++ src/autofit/afcjk.c -@@ -843,7 +843,7 @@ - { - AF_AxisHints axis = &hints->axis[dim]; - AF_Segment segments = axis->segments; -- AF_Segment segment_limit = segments + axis->num_segments; -+ AF_Segment segment_limit = axis->num_segments == 0 ? segments : segments + axis->num_segments; - AF_Direction major_dir = axis->major_dir; - AF_Segment seg1, seg2; - FT_Pos len_threshold; -@@ -1005,7 +1005,7 @@ - AF_CJKAxis laxis = &((AF_CJKMetrics)hints->metrics)->axis[dim]; - - AF_Segment segments = axis->segments; -- AF_Segment segment_limit = segments + axis->num_segments; -+ AF_Segment segment_limit = axis->num_segments == 0 ? segments : segments + axis->num_segments; - AF_Segment seg; - - FT_Fixed scale; -@@ -1153,7 +1153,7 @@ - */ +--- src/psaux/psobjs.c.orig 2023-02-04 23:00:05.000000000 +0900 ++++ src/psaux/psobjs.c 2023-02-22 16:28:26.632283841 +0900 +@@ -200,7 +200,8 @@ + /* add the object to the base block and adjust offset */ + table->elements[idx] = FT_OFFSET( table->block, table->cursor ); + table->lengths [idx] = length; +- FT_MEM_COPY( table->block + table->cursor, object, length ); ++ if (length != 0) ++ FT_MEM_COPY( table->block + table->cursor, object, length ); + + table->cursor += length; + return FT_Err_Ok; +--- src/truetype/ttgxvar.c ++++ src/truetype/ttgxvar.c +@@ -1045,7 +1045,7 @@ + if ( varData->longWords ) + per_region_size *= 2; + +- bytes = varData->deltaSet + per_region_size * innerIndex; ++ bytes = varData->deltaSet ? varData->deltaSet + per_region_size * innerIndex : NULL; + + if ( varData->longWords ) { - AF_Edge edges = axis->edges; -- AF_Edge edge_limit = edges + axis->num_edges; -+ AF_Edge edge_limit = axis->num_edges == 0 ? edges : edges + axis->num_edges; - AF_Edge edge; - - -@@ -1291,7 +1291,7 @@ - { - AF_AxisHints axis = &hints->axis[dim]; - AF_Edge edge = axis->edges; -- AF_Edge edge_limit = edge + axis->num_edges; -+ AF_Edge edge_limit = axis->num_edges == 0 ? edge : edge + axis->num_edges; - AF_CJKAxis cjk = &metrics->axis[dim]; - FT_Fixed scale = cjk->scale; - FT_Pos best_dist0; /* initial threshold */ -@@ -1798,7 +1798,7 @@ - { - AF_AxisHints axis = &hints->axis[dim]; - AF_Edge edges = axis->edges; -- AF_Edge edge_limit = edges + axis->num_edges; -+ AF_Edge edge_limit = axis->num_edges == 0 ? edges : edges + axis->num_edges; - FT_PtrDist n_edges; - AF_Edge edge; - AF_Edge anchor = NULL; -@@ -2177,7 +2177,7 @@ - { - AF_AxisHints axis = & hints->axis[dim]; - AF_Edge edges = axis->edges; -- AF_Edge edge_limit = edges + axis->num_edges; -+ AF_Edge edge_limit = axis->num_edges == 0 ? edges : edges + axis->num_edges; - AF_Edge edge; - FT_Bool snapping; - ---- src/autofit/afhints.c -+++ src/autofit/afhints.c -@@ -1316,7 +1316,7 @@ - { - AF_AxisHints axis = & hints->axis[dim]; - AF_Segment segments = axis->segments; -- AF_Segment segment_limit = segments + axis->num_segments; -+ AF_Segment segment_limit = axis->num_segments == 0 ? segments : segments + axis->num_segments; - AF_Segment seg; - - -@@ -1393,7 +1393,7 @@ - AF_Point point_limit = points + hints->num_points; - AF_AxisHints axis = &hints->axis[dim]; - AF_Edge edges = axis->edges; -- AF_Edge edge_limit = edges + axis->num_edges; -+ AF_Edge edge_limit = axis->num_edges == 0 ? edges : edges + axis->num_edges; - FT_UInt touch_flag; - - ---- src/autofit/aflatin.c -+++ src/autofit/aflatin.c -@@ -1989,7 +1989,7 @@ - { - AF_AxisHints axis = &hints->axis[dim]; - AF_Segment segments = axis->segments; -- AF_Segment segment_limit = segments + axis->num_segments; -+ AF_Segment segment_limit = axis->num_segments == 0 ? segments : segments + axis->num_segments; - FT_Pos len_threshold, len_score, dist_score, max_width; - AF_Segment seg1, seg2; - -@@ -2134,7 +2134,7 @@ - FT_Bool top_to_bottom_hinting = 0; - - AF_Segment segments = axis->segments; -- AF_Segment segment_limit = segments + axis->num_segments; -+ AF_Segment segment_limit = axis->num_segments == 0 ? segments : segments + axis->num_segments; - AF_Segment seg; - - #if 0 -@@ -2500,7 +2500,7 @@ - { - AF_AxisHints axis = &hints->axis[AF_DIMENSION_VERT]; - AF_Edge edge = axis->edges; -- AF_Edge edge_limit = edge + axis->num_edges; -+ AF_Edge edge_limit = axis->num_edges == 0 ? edge : edge + axis->num_edges; - AF_LatinAxis latin = &metrics->axis[AF_DIMENSION_VERT]; - FT_Fixed scale = latin->scale; - -@@ -2993,7 +2993,7 @@ - { - AF_AxisHints axis = &hints->axis[dim]; - AF_Edge edges = axis->edges; -- AF_Edge edge_limit = edges + axis->num_edges; -+ AF_Edge edge_limit = axis->num_edges == 0 ? edges : edges + axis->num_edges; - FT_PtrDist n_edges; - AF_Edge edge; - AF_Edge anchor = NULL; |