ghostscript-9.20-cve-2016-7979.patch 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. From 875a0095f37626a721c7ff57d606a0f95af03913 Mon Sep 17 00:00:00 2001
  2. From: Ken Sharp <ken.sharp@artifex.com>
  3. Date: Wed, 5 Oct 2016 10:10:58 +0100
  4. Subject: [PATCH] DSC parser - validate parameters
  5. Bug #697190 ".initialize_dsc_parser doesn't validate the parameter is a dict type before using it."
  6. Regardless of any security implications, its simply wrong for a PostScript
  7. operator not to validate its parameter(s).
  8. No differences expected.
  9. ---
  10. psi/zdscpars.c | 13 +++++++++----
  11. 1 file changed, 9 insertions(+), 4 deletions(-)
  12. diff --git a/psi/zdscpars.c b/psi/zdscpars.c
  13. index c05e154..9b4b605 100644
  14. --- a/psi/zdscpars.c
  15. +++ b/psi/zdscpars.c
  16. @@ -150,11 +150,16 @@ zinitialize_dsc_parser(i_ctx_t *i_ctx_p)
  17. ref local_ref;
  18. int code;
  19. os_ptr const op = osp;
  20. - dict * const pdict = op->value.pdict;
  21. - gs_memory_t * const mem = (gs_memory_t *)dict_memory(pdict);
  22. - dsc_data_t * const data =
  23. - gs_alloc_struct(mem, dsc_data_t, &st_dsc_data_t, "DSC parser init");
  24. + dict *pdict;
  25. + gs_memory_t *mem;
  26. + dsc_data_t *data;
  27. + check_read_type(*op, t_dictionary);
  28. +
  29. + pdict = op->value.pdict;
  30. + mem = (gs_memory_t *)dict_memory(pdict);
  31. +
  32. + data = gs_alloc_struct(mem, dsc_data_t, &st_dsc_data_t, "DSC parser init");
  33. if (!data)
  34. return_error(gs_error_VMerror);
  35. data->document_level = 0;
  36. --
  37. 2.7.4