You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.2 KiB

  1. From 0f7f61ed1b7b697e283e37bd2d731d0bd57adb55 Mon Sep 17 00:00:00 2001
  2. From: "K.Kosako" <kosako@sofnec.co.jp>
  3. Date: Thu, 27 Jun 2019 17:25:26 +0900
  4. Subject: [PATCH] Fix CVE-2019-13224: don't allow different encodings for
  5. onig_new_deluxe()
  6. diff --git a/src/regext.c b/src/regext.c
  7. index fa4b360..965c793 100644
  8. --- a/src/regext.c
  9. +++ b/src/regext.c
  10. @@ -29,6 +29,7 @@
  11. #include "regint.h"
  12. +#if 0
  13. static void
  14. conv_ext0be32(const UChar* s, const UChar* end, UChar* conv)
  15. {
  16. @@ -158,6 +159,7 @@ conv_encoding(OnigEncoding from, OnigEncoding to, const UChar* s, const UChar* e
  17. return ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION;
  18. }
  19. +#endif
  20. extern int
  21. onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
  22. @@ -169,9 +171,7 @@ onig_new_deluxe(regex_t** reg, const UChar* pattern, const UChar* pattern_end,
  23. if (IS_NOT_NULL(einfo)) einfo->par = (UChar* )NULL;
  24. if (ci->pattern_enc != ci->target_enc) {
  25. - r = conv_encoding(ci->pattern_enc, ci->target_enc, pattern, pattern_end,
  26. - &cpat, &cpat_end);
  27. - if (r != 0) return r;
  28. + return ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION;
  29. }
  30. else {
  31. cpat = (UChar* )pattern;