summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormischief <mischief@offblast.org>2017-03-14 00:48:50 -0700
committermischief <mischief@offblast.org>2017-03-14 00:48:50 -0700
commitd18440d992243c8e2f5a866d074a597c1a03754f (patch)
tree74007440ffbae606fc44ae40162c756f265655d6
parent07a14612a1f626716a7746000dcc4492a8648223 (diff)
gs: validate parameter is dict in .initialize_dsc_parse
gs bug 697190, upstream commit 875a0095 also check gs_alloc_struct return value from upstream commit a2afc66d
-rw-r--r--sys/src/cmd/gs/src/zdscpars.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/sys/src/cmd/gs/src/zdscpars.c b/sys/src/cmd/gs/src/zdscpars.c
index 315c9074f..fb6ff74a3 100644
--- a/sys/src/cmd/gs/src/zdscpars.c
+++ b/sys/src/cmd/gs/src/zdscpars.c
@@ -132,11 +132,18 @@ zinitialize_dsc_parser(i_ctx_t *i_ctx_p)
ref local_ref;
int code;
os_ptr const op = osp;
- dict * const pdict = op->value.pdict;
- gs_memory_t * const mem = (gs_memory_t *)dict_memory(pdict);
- dsc_data_t * const data =
- gs_alloc_struct(mem, dsc_data_t, &st_dsc_data_t,
- "DSC parser init");
+ dict *pdict;
+ gs_memory_t *mem;
+ dsc_data_t *data;
+
+ check_read_type(*op, t_dictionary);
+
+ pdict = op->value.pdict;
+ mem = (gs_memory_t *)dict_memory(pdict);
+
+ data = gs_alloc_struct(mem, dsc_data_t, &st_dsc_data_t, "DSC parser init");
+ if (!data)
+ return_error(e_VMerror);
data->dsc_data_ptr = dsc_init((void *) "Ghostscript DSC parsing");
if (!data->dsc_data_ptr)