another try at dealing with CGI.pm problem

open the temp file if all attempts to get a fd fail
master
Joey Hess 2008-07-08 11:25:30 -04:00
parent 5ccd0cb518
commit 66f35e30dc
2 changed files with 16 additions and 1 deletions

View File

@ -88,6 +88,10 @@ sub formbuilder (@) { #{{{
# of the temp file that CGI writes the upload to.
my $tempfile=$q->tmpFileName($filename);
if (! defined $tempfile) {
error("failed to determine temp filename");
}
$filename=IkiWiki::titlepage(
IkiWiki::possibly_foolish_untaint(
attachment_location($form->field('page')).
@ -136,7 +140,9 @@ sub formbuilder (@) { #{{{
# needed by old CGI versions
$fh=$q->param('attachment');
if (! defined $fh || ! ref $fh) {
error("failed to get filehandle");
# even that doesn't always work,
# fall back to opening the tempfile
open($fh, "<", $tempfile) || error("failed to open $tempfile: $!");
}
}
binmode($fh);

View File

@ -54,6 +54,15 @@ the error message like below:
>>>>>> --[[Paweł|ptecza]]
>>>>>>> Well then, your CGI.pm is somehow not behaving as its documentation
>>>>>>> describes, in two ways:
>>>>>>> 1. `upload()` is not returning a reference to the filehandle
>>>>>>> 2. The filename returned by `param("attachment")` is not also
>>>>>>> a file handle.
>>>>>>> That seems very broken. I can try to work around it some more
>>>>>>> though. I've checked in a second try at dealing with things, can
>>>>>>> you try it? --[[Joey]]
The same message I can see in the Apache log file. There is also
following warning: