patch-ext_dl_handle_c 885 B

123456789101112131415161718192021222324252627282930
  1. $OpenBSD: patch-ext_dl_handle_c,v 1.1 2015/12/18 17:36:31 jeremy Exp $
  2. Backport fix for CVE-2009-5147 and CVE-2015-7551 from r23405.
  3. --- ext/dl/handle.c.orig Wed Dec 16 09:07:34 2015
  4. +++ ext/dl/handle.c Wed Dec 16 09:11:33 2015
  5. @@ -5,6 +5,8 @@
  6. #include <ruby.h>
  7. #include "dl.h"
  8. +#define SafeStringValuePtr(v) (rb_string_value(&v), rb_check_safe_obj(v), RSTRING_PTR(v))
  9. +
  10. VALUE rb_cDLHandle;
  11. void
  12. @@ -52,11 +54,11 @@ rb_dlhandle_initialize(int argc, VALUE argv[], VALUE s
  13. switch (rb_scan_args(argc, argv, "11", &lib, &flag)) {
  14. case 1:
  15. - clib = NIL_P(lib) ? NULL : StringValuePtr(lib);
  16. + clib = NIL_P(lib) ? NULL : SafeStringValuePtr(lib);
  17. cflag = RTLD_LAZY | RTLD_GLOBAL;
  18. break;
  19. case 2:
  20. - clib = NIL_P(lib) ? NULL : StringValuePtr(lib);
  21. + clib = NIL_P(lib) ? NULL : SafeStringValuePtr(lib);
  22. cflag = NUM2INT(flag);
  23. break;
  24. default: