dougm 02/04/09 13:19:25
Modified: xs typemap
Log:
override T_PTROBJ INPUT typemap to croak if object is not a blessed
reference, to prevent possible segv from e.g. Apache::Server->process
Revision Changes Path
1.6 +11 -0 modperl-2.0/xs/typemap
Index: typemap
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/typemap,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- typemap 25 Sep 2001 19:44:03 -0000 1.5
+++ typemap 9 Apr 2002 20:19:25 -0000 1.6
@@ -19,6 +19,17 @@
######################################################################
INPUT
+T_PTROBJ
+ if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
+ IV tmp = SvIV((SV*)SvRV($arg));
+ $var = INT2PTR($type,tmp);
+ }
+ else {
+ Perl_croak(aTHX_ SvROK($arg) ?
+ \"$var is not of type ${ntype}\" :
+ \"$var is not a blessed reference\");
+ }
+
T_APACHEOBJ
$var = modperl_xs_sv2request_rec(aTHX_ $arg, \"$ntype\", cv)