From 0c800dc3f64ee030df1cd0a6a1dcd6df71502dea Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Tue, 30 Oct 2012 19:23:30 +1030 Subject: type1-subset: ensure subroutine numnber is an integer --- src/cairo-type1-subset.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/cairo-type1-subset.c b/src/cairo-type1-subset.c index 786055a3b..dff4a953e 100644 --- a/src/cairo-type1-subset.c +++ b/src/cairo-type1-subset.c @@ -827,15 +827,18 @@ cairo_type1_font_subset_parse_charstring (cairo_type1_font_subset_t *font, case TYPE1_CHARSTRING_COMMAND_CALLSUBR: if (font->subset_subrs && font->build_stack.sp > 0) { - int subr_num = font->build_stack.stack[--font->build_stack.sp]; - if (subr_num >= 0 && subr_num < font->num_subrs) { - font->subrs[subr_num].used = TRUE; - status = cairo_type1_font_subset_parse_charstring ( - font, - glyph, - font->subrs[subr_num].subr_string, - font->subrs[subr_num].subr_length); - break; + double int_val; + if (modf(font->build_stack.stack[--font->build_stack.sp], &int_val) == 0.0) { + int subr_num = int_val; + if (subr_num >= 0 && subr_num < font->num_subrs) { + font->subrs[subr_num].used = TRUE; + status = cairo_type1_font_subset_parse_charstring ( + font, + glyph, + font->subrs[subr_num].subr_string, + font->subrs[subr_num].subr_length); + break; + } } } font->subset_subrs = FALSE; -- cgit v1.2.1