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). 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? If so, what are these maximums?
And, coming from a total newbee, does CGI.pm deal with this better? If so, how? ################################################################ # For immediate backwards compatibility with old cgi-lib.pl apps # I've named the sub ReadParse and the hash $in ################################################################ sub ReadParse { local($name, $value, $pair, $buffer, @pairs); if ($ENV{'REQUEST_METHOD'} eq 'GET') { @pairs = split(/&/, $ENV{'QUERY_STRING'}); } elsif ($ENV{'REQUEST_METHOD'} eq 'POST') { ################################################################ # This part of the script seem to be taking the buffer size # directly from the POSTed data itself. I think this could be a # potential problem. What do you think? ################################################################ read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # @pairs = split(/&/, $buffer); # ################################################################ } else { $Error_Message = "Bad request method ($ENV{'REQUEST_METHOD'}). Use POST or GET"; return(0); } foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $name =~ s/\n//g; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/\n//g; $value =~ s/<!--(.|\n)*-->//g; # disallow SSI $in{$name} = $value; } return; } ################################################################ =================== Shaun Fryer =================== London Webmasters http://LWEB.NET PH: 519-858-9660 FX: 519-858-9024 =================== -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]