diff options
author | mischief <mischief@offblast.org> | 2017-03-14 00:48:50 -0700 |
---|---|---|
committer | mischief <mischief@offblast.org> | 2017-03-14 00:48:50 -0700 |
commit | d18440d992243c8e2f5a866d074a597c1a03754f (patch) | |
tree | 74007440ffbae606fc44ae40162c756f265655d6 | |
parent | 07a14612a1f626716a7746000dcc4492a8648223 (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.c | 17 |
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) |