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: embperl-cvs-unsubscr...@perl.apache.org For additional commands, e-mail: embperl-cvs-h...@perl.apache.org