From: Shaun Fryer <[EMAIL PROTECTED]>

> Please take into account that I'm new at this...
> 
> Rather than using CGI.pm, I'm using the following library sub-routine
> which was passed to me by a friend (I think from one of the O'Reilly
> books). 

Especialy since you are new at this you should use CGI.pm.

> What I'm wondering is if Perl 5 has any built in functionality
> to prevent buffer overruns or excessive memory consumption resulting
> from POST data. Is there a default maximum for buffer size and for
> bytes recieved via POST? 

Normaly no.

> If so, what are these maximums?
> 
> And, coming from a total newbee, does CGI.pm deal with this better? If
> so, how?

Yes, CGI.pm does handle this. From it's docs:

        =item B<$CGI::POST_MAX>

        If set to a non-negative integer, this variable puts a ceiling
        on the size of POSTings, in bytes.  If CGI.pm detects a POST
        that is greater than the ceiling, it will immediately exit with an      
        error message.  This value will affect both ordinary POSTs and
        multipart POSTs, meaning that it limits the maximum size of file
        uploads as well.  You should set this to a reasonably high
        value, such as 1 megabyte.

>  $value =~ s/<!--(.|\n)*-->//g; # disallow SSI

THIS HAS NOTHING TO DO WITH POST DATA PARSING. THIS 
THING SHOULD NOT HAVE BEEN INCLUDED IN THIS FUNCTION!

This was aparently added by someone who wanted to include the 
posted data in an HTML page. But first, he should have deleted the 
included SSIs (well ... HTML comments, that could be SSIs) later, 
not within a function that parses and unescapes the posted data. 
(Never do two unrelated things in a single procedure.) And second, 
the regexp is incorrect.

Jenda

P.S.: Again from CGI.pm's docs:

        =head1 COMPATIBILITY WITH CGI-LIB.PL

        To make it easier to port existing programs that use cgi-lib.pl
        the compatibility routine "ReadParse" is provided.  Porting is
        simple:

        OLD VERSION
            require "cgi-lib.pl";
            &ReadParse;
            print "The value of the antique is $in{antique}.\n";

        NEW VERSION
            use CGI;
            CGI::ReadParse
            print "The value of the antique is $in{antique}.\n";


=========== [EMAIL PROTECTED] == http://Jenda.Krynicky.cz ==========
There is a reason for living. There must be. I've seen it somewhere.
It's just that in the mess on my table ... and in my brain
I can't find it.
                                        --- me

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to