Author: richter
Date: Mon Oct 4 03:49:25 2010
New Revision: 1004099
URL: http://svn.apache.org/viewvc?rev=1004099&view=rev
Log:
- Fix Execute parameter app_name (was appname, but app_name
is correct, appname is still accepted, but might not always
work)
- Add parameter checks for Execute parameters to avoid segfaults
in case of non refs where refs are expected.
Modified:
perl/embperl/trunk/embperl.h
perl/embperl/trunk/epmain.c
perl/embperl/trunk/test.pl
Modified: perl/embperl/trunk/embperl.h
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/embperl.h?rev=1004099&r1=1004098&r2=1004099&view=diff
==============================================================================
--- perl/embperl/trunk/embperl.h (original)
+++ perl/embperl/trunk/embperl.h Mon Oct 4 03:49:25 2010
@@ -97,6 +97,7 @@ enum tRc
rcTimeFormatErr,
rcSubCallNotRequest,
rcTokenNotFound,
+ rcNotScalarRef,
rcForbidden = 403,
rcNotFound = 404,
rcDecline = -1
Modified: perl/embperl/trunk/epmain.c
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/epmain.c?rev=1004099&r1=1004098&r2=1004099&view=diff
==============================================================================
--- perl/embperl/trunk/epmain.c (original)
+++ perl/embperl/trunk/epmain.c Mon Oct 4 03:49:25 2010
@@ -179,6 +179,7 @@ static char * DoLogError (/*i/o*/ struct
case rcUnknownOption: msg ="[%d]ERR: %d: %s Unkown option
'%s' in configuration directive '%s'" ; break ;
case rcTimeFormatErr: msg ="[%d]ERR: %d: %s Format error in
%s = %s" ; break ;
case rcSubCallNotRequest: msg ="[%d]ERR: %d: %s A Embperl sub
is called and no Embperl request is running %s %s" ; break ;
+ case rcNotScalarRef: msg ="[%d]ERR: %d: %s %s need scalar
in '%s'" ; break ;
default: msg ="[%d]ERR: %d: %s Error (no
description) %s %s" ; break ;
}
@@ -1058,10 +1059,19 @@ static int OutputToMem (/*i/o*/ register
{
epTHX_
- SV * pOut = SvRV (r -> Component.Param.pOutput) ;
+ SV * pOut ;
char * pData ;
STRLEN l ;
+ if (!SvROK (r -> Component.Param.pOutput))
+ {
+ strcpy (r -> errdat1, "OutputToMem") ;
+ strcpy (r -> errdat2, "parameter output") ;
+
+ return rcNotScalarRef ;
+ }
+
+ pOut = SvRV (r -> Component.Param.pOutput) ;
if (!r -> bError && r -> Component.pOutputSV && !r ->
Component.pImportStash)
{
sv_setsv (pOut, r -> Component.pOutputSV) ;
Modified: perl/embperl/trunk/test.pl
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/test.pl?rev=1004099&r1=1004098&r2=1004099&view=diff
==============================================================================
--- perl/embperl/trunk/test.pl (original)
+++ perl/embperl/trunk/test.pl Mon Oct 4 03:49:25 2010
@@ -2328,14 +2328,16 @@ do
print "ok\n" unless ($err) ;
}
- if ($err == 0 || $opt_ignoreerror)
+ if (0) #$err == 0 || $opt_ignoreerror)
{
$txt2 = "errornous parameter (path) ...";
$txt2 .= ' ' x (30 - length ($txt2)) ;
print $txt2 ;
- $err = eval { Embperl::Execute ({'inputfile' => $src,
+ $err = eval { Embperl::Execute ({'inputfile' => 'xxxx0',
'errors' => \...@errors,
+ 'debug' => $defaultdebug,
+ input_escmode => 7,
path => "not an array ref",
}) ; } ;
$err ||= 0 ;
@@ -2354,10 +2356,14 @@ do
$txt2 .= ' ' x (30 - length ($txt2)) ;
print $txt2 ;
my $out ;
-
- $err = Embperl::Execute ({'inputfile' => $src,
+ @errors = () ;
+
+ $err = Embperl::Execute ({'inputfile' => 'xxxx1',
'errors' => \...@errors,
+ 'debug' => $defaultdebug,
+ input_escmode => 7,
input => $out,
+ output => \$out,
}) ;
$err = CheckError (1) ;
@@ -2371,6 +2377,32 @@ do
print "ok\n" unless ($err) ;
}
+ if ($err == 0 || $opt_ignoreerror)
+ {
+ $txt2 = "errornous parameter (output) ...";
+ $txt2 .= ' ' x (30 - length ($txt2)) ;
+ print $txt2 ;
+ my $out ;
+ @errors = () ;
+
+ $err = Embperl::Execute ({'inputfile' => 'xxxx2',
+ 'errors' => \...@errors,
+ 'debug' => $defaultdebug,
+ input_escmode => 7,
+ output => $out,
+ }) ;
+ $err = CheckError (2) ;
+
+ if (@errors != 2)
+ {
+ print "\n...@errors does not return correct number of
errors (is " . scalar(@errors) . ", should 2)\n" ;
+ $err = 1 ;
+ }
+
+
+ print "ok\n" unless ($err) ;
+ }
+
foreach $src (
'EmbperlObject/epopage1.htm',
'EmbperlObject/sub/epopage2.htm', 'EmbperlObject/obj/epoobj3.htm',
'EmbperlObject/sub/epobless.htm',
'EmbperlObject/sub/epobless.htm',
@@ -2457,8 +2489,8 @@ do
},
{
text => 'No cache 2',
- param => { param => [2], },
- 'cmp' => 2,
+ param => { param => [99], },
+ 'cmp' => 99,
},
{
text => 'Expires in 1 sec',
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]