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

Reply via email to