bin / mupdf / mupdf-1.7 / debian / patches / 0004-Fix-unsafe-conversion-from-float-to-fz_linecap.patch
7638 viewsFrom: =?utf-8?q?=22Kan-Ru_Chen_=28=E9=99=B3=E4=BE=83=E5=A6=82=29=22?=1<[email protected]>2Date: Sat, 20 Sep 2014 20:15:19 +08003Subject: Fix unsafe conversion from float to fz_linecap45---6source/pdf/pdf-op-run.c | 13 ++++++++++---71 file changed, 10 insertions(+), 3 deletions(-)89diff --git a/source/pdf/pdf-op-run.c b/source/pdf/pdf-op-run.c10index 22e6a4b..dd3be77 10064411--- a/source/pdf/pdf-op-run.c12+++ b/source/pdf/pdf-op-run.c13@@ -2000,12 +2000,19 @@ static void pdf_run_J(pdf_csi *csi, void *state)14{15pdf_run_state *pr = (pdf_run_state *)state;16pdf_gstate *gstate = pr->gstate + pr->gtop;17+ fz_context *ctx = pr->ctx;18+ int linecap;1920pr->dev->flags &= ~(FZ_DEVFLAG_STARTCAP_UNDEFINED | FZ_DEVFLAG_DASHCAP_UNDEFINED | FZ_DEVFLAG_ENDCAP_UNDEFINED);21gstate->stroke_state = fz_unshare_stroke_state(csi->doc->ctx, gstate->stroke_state);22- gstate->stroke_state->start_cap = csi->stack[0];23- gstate->stroke_state->dash_cap = csi->stack[0];24- gstate->stroke_state->end_cap = csi->stack[0];25+26+ linecap = (int) csi->stack[0];27+ if (linecap < FZ_LINECAP_BUTT || linecap > FZ_LINECAP_TRIANGLE)28+ fz_throw(ctx, FZ_ERROR_GENERIC, "Invalid linecap %d", linecap);29+30+ gstate->stroke_state->start_cap = linecap;31+ gstate->stroke_state->dash_cap = linecap;32+ gstate->stroke_state->end_cap = linecap;33}3435static void pdf_run_K(pdf_csi *csi, void *state)363738