Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
7638 views
1
From: =?utf-8?q?=22Kan-Ru_Chen_=28=E9=99=B3=E4=BE=83=E5=A6=82=29=22?=
2
<[email protected]>
3
Date: Sat, 20 Sep 2014 20:15:19 +0800
4
Subject: Fix unsafe conversion from float to fz_linecap
5
6
---
7
source/pdf/pdf-op-run.c | 13 ++++++++++---
8
1 file changed, 10 insertions(+), 3 deletions(-)
9
10
diff --git a/source/pdf/pdf-op-run.c b/source/pdf/pdf-op-run.c
11
index 22e6a4b..dd3be77 100644
12
--- a/source/pdf/pdf-op-run.c
13
+++ b/source/pdf/pdf-op-run.c
14
@@ -2000,12 +2000,19 @@ static void pdf_run_J(pdf_csi *csi, void *state)
15
{
16
pdf_run_state *pr = (pdf_run_state *)state;
17
pdf_gstate *gstate = pr->gstate + pr->gtop;
18
+ fz_context *ctx = pr->ctx;
19
+ int linecap;
20
21
pr->dev->flags &= ~(FZ_DEVFLAG_STARTCAP_UNDEFINED | FZ_DEVFLAG_DASHCAP_UNDEFINED | FZ_DEVFLAG_ENDCAP_UNDEFINED);
22
gstate->stroke_state = fz_unshare_stroke_state(csi->doc->ctx, gstate->stroke_state);
23
- gstate->stroke_state->start_cap = csi->stack[0];
24
- gstate->stroke_state->dash_cap = csi->stack[0];
25
- gstate->stroke_state->end_cap = csi->stack[0];
26
+
27
+ linecap = (int) csi->stack[0];
28
+ if (linecap < FZ_LINECAP_BUTT || linecap > FZ_LINECAP_TRIANGLE)
29
+ fz_throw(ctx, FZ_ERROR_GENERIC, "Invalid linecap %d", linecap);
30
+
31
+ gstate->stroke_state->start_cap = linecap;
32
+ gstate->stroke_state->dash_cap = linecap;
33
+ gstate->stroke_state->end_cap = linecap;
34
}
35
36
static void pdf_run_K(pdf_csi *csi, void *state)
37
38