Author: richter
Date: Sun Jan 5 14:09:59 2025
New Revision: 1922901
URL: http://svn.apache.org/viewvc?rev=1922901&view=rev
Log:
Limit length of formdata to 64M (not for file upload), to avoid huge memory
allocation/failures
Modified:
perl/embperl/trunk/embperl.h
perl/embperl/trunk/epinit.c
perl/embperl/trunk/epmain.c
Modified: perl/embperl/trunk/embperl.h
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/embperl.h?rev=1922901&r1=1922900&r2=1922901&view=diff
==============================================================================
--- perl/embperl/trunk/embperl.h (original)
+++ perl/embperl/trunk/embperl.h Sun Jan 5 14:09:59 2025
@@ -98,6 +98,7 @@ enum tRc
rcSubCallNotRequest,
rcTokenNotFound,
rcNotScalarRef,
+ rcFormDataTruncated,
rcForbidden = 403,
rcNotFound = 404,
rcDecline = -1
Modified: perl/embperl/trunk/epinit.c
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/epinit.c?rev=1922901&r1=1922900&r2=1922901&view=diff
==============================================================================
--- perl/embperl/trunk/epinit.c (original)
+++ perl/embperl/trunk/epinit.c Sun Jan 5 14:09:59 2025
@@ -58,6 +58,10 @@ SV * embperl_ThreadDataRV ;
#define EMBPERL_EscMode_NAME EMBPERL_PACKAGE_STR"::escmode"
#define EMBPERL_CurrNode_NAME EMBPERL_PACKAGE_STR"::_ep_node"
+#define MAX_FORMDATA_SIZE 67108864 /* 64 MB */
+#define MAX_FORMDATA_SIZE_XXSTR(A) MAX_FORMDATA_SIZE_XSTR(A)
+#define MAX_FORMDATA_SIZE_XSTR(A) #A
+#define MAX_FORMDATA_SIZE_STR MAX_FORMDATA_SIZE_XXSTR(MAX_FORMDATA_SIZE)
static int bInitDone = 0 ; /* c part is already initialized */
static int nRequestCount = 1 ;
@@ -1254,7 +1258,12 @@ static int embperl_SetupFormData (/*i/o*
return ok ;
}
-
+ if (len > MAX_FORMDATA_SIZE)
+ {
+ LogErrorParam (r, rcFormDataTruncated, MAX_FORMDATA_SIZE_STR, NULL) ;
+ len = MAX_FORMDATA_SIZE ;
+ }
+
if (len == 0)
{
p = r -> Param.sQueryInfo ;
Modified: perl/embperl/trunk/epmain.c
URL:
http://svn.apache.org/viewvc/perl/embperl/trunk/epmain.c?rev=1922901&r1=1922900&r2=1922901&view=diff
==============================================================================
--- perl/embperl/trunk/epmain.c (original)
+++ perl/embperl/trunk/epmain.c Sun Jan 5 14:09:59 2025
@@ -180,6 +180,7 @@ static char * DoLogError (/*i/o*/ struct
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 ;
+ case rcFormDataTruncated: msg ="[%d]ERR: %d: %s Formdata
exceeded length of %s bytes, truncated" ; break ;
default: msg ="[%d]ERR: %d: %s Error (no
description) %s %s" ; break ;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]