Skip Menu |

This queue is for tickets about the Data-FormValidator CPAN distribution.

Maintainer(s)' notes

This is the bug queue for Data::FormValidator.

Report information
The Basics
Id: 45233
Status: rejected
Priority: 0/
Queue: Data-FormValidator

People
Owner: MARKSTOS [...] cpan.org
Requestors: Giannis Economou (no email address)
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: 4.62
Fixed in: (no value)



General info: I'm writing about an issue I'm having on a CGI::Application (Titanium) webapp I'm building. I'm using: use Data::FormValidator::Constraints::Upload qw(file_format file_max_bytes); and handle some file uploads POSTed by a form. I'm using Win32 browsers (webapp running as plain cgi on Apache on xubuntu) to upload files and have C:A:P::ValidateRM doing validation of the form. The problem: When uploading files that have spaces in their filename, I get the following error: app.cgi: can't get filehandle for field named PhotoCat3 at /usr/local/share/perl/5.10.0/Data/FormValidator/Constraints/Upload.pm line 88. The field should follow these rules: constraint_methods => { PhotoCat1 => [ file_format( mime_types => [qw!image/jpeg image/pjpeg image/png image/x-png!] ), file_max_bytes(2097152), ], } but both file_format and file_max_bytes can not work right. When the filename doesn't have spaces, everything is working correct. Tried different browsers on different OS (Win32, Linux). Attached is some system info and the Data::Dump of interesting (related) parts of the check_rm() method return results. Thank you.
Subject: buginfo.txt
'.tmpfiles' => { '*Fh::fh00001summer photo.jpg' => { 'info' => { 'Content-Type' => 'image/jpeg', 'Content-Disposition' => 'form-data; name="PhotoCat1"; filename="summer photo.jpg"' }, 'name' => bless( do{\(my $o = '/var/tmp/CGItemp4377')}, 'CGITempFile' ), 'hndl' => $VAR1->{'__INPUT_DATA'}{'PhotoCat1'}[0] } }, 'PhotoCat1' => [ bless( \*{'Fh::fh00001summer photo.jpg'}, 'Fh' ) ], 'invalid' => { 'PhotoCat1' => [ 'file_format', 'file_max_bytes' ] } ================================================================================ (server)$ perl -V Summary of my perl5 (revision 5 version 10 subversion 0) configuration: Platform: osname=linux, osvers=2.6.24-19-server, archname=i486-linux-gnu-thread-multi uname='linux palmer 2.6.24-19-server #1 smp sat jul 12 00:40:01 utc 2008 i686 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.0 -Dsitearch=/usr/local/lib/perl/5.10.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.0 -Dd_dosuid -des' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=undef, use64bitall=undef, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.3.3 20081217 (prerelease)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib /usr/lib64 libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=/lib/libc-2.9.so, so=so, useshrplib=true, libperl=libperl.so.5.10.0 gnulibc_version='2.9' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API Built under linux Compiled at Jan 5 2009 19:47:06 @INC: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl . (server)$ uname -a Linux talos 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux
Subject: Re: [rt.cpan.org #45233]
Date: Thu, 23 Apr 2009 15:00:04 -0400
To: bug-Data-FormValidator [...] rt.cpan.org
From: Mark Stosberg <mark [...] summersault.com>
How do you know this due a bug in Data::FormValidator and not another piece, like CGI.pm? If you could look into this issue further, it would be helpful. Mark Show quoted text
> Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=45233 > > > General info: > I'm writing about an issue I'm having on a CGI::Application (Titanium) > webapp I'm building. > I'm using: > use Data::FormValidator::Constraints::Upload qw(file_format file_max_bytes); > and handle some file uploads POSTed by a form. > I'm using Win32 browsers (webapp running as plain cgi on Apache on > xubuntu) to upload files and have C:A:P::ValidateRM doing validation of > the form. > > The problem: > When uploading files that have spaces in their filename, I get the > following error: > app.cgi: can't get filehandle for field named PhotoCat3 at > /usr/local/share/perl/5.10.0/Data/FormValidator/Constraints/Upload.pm > line 88. > > The field should follow these rules: > constraint_methods => { > PhotoCat1 => [ > file_format( mime_types => [qw!image/jpeg image/pjpeg image/png > image/x-png!] ), > file_max_bytes(2097152), > ], > } > > > > but both file_format and file_max_bytes can not work right. > > > When the filename doesn't have spaces, everything is working correct. > > Tried different browsers on different OS (Win32, Linux). > > > Attached is some system info and the Data::Dump of interesting (related) > parts of the check_rm() method return results. > > Thank you. >
-- . . . . . . . . . . . . . . . . . . . . . . . . . . . Mark Stosberg Principal Developer mark@summersault.com Summersault, LLC 765-939-9301 ext 202 database driven websites . . . . . http://www.summersault.com/ . . . . . . . .
From: geconomou [...] gmail.com
I'm using CGI.pm, Titanium and CGI::Uploader. When I comment out the constraints file_format() and file_max_bytes() from the validator profile, the uploads are working right and as expected, regardless of spaces in the filenames. Thank you. Giannis On Thu Apr 23 15:00:30 2009, mark@summersault.com wrote: Show quoted text
> How do you know this due a bug in Data::FormValidator and not another > piece, like CGI.pm? > > If you could look into this issue further, it would be helpful. > > Mark > >
Update: When using CGI::Simple instead of CGI.pm in C::A, then file_format() and file_max_bytes() are working right, regardless of spaces in filenames. Giannis On Fri Apr 24 04:16:34 2009, gecon wrote: Show quoted text
> I'm using CGI.pm, Titanium and CGI::Uploader. > > When I comment out the constraints file_format() and file_max_bytes() > from the validator profile, the uploads are working right and as > expected, regardless of spaces in the filenames. > > Thank you. > > > Giannis > > > > > On Thu Apr 23 15:00:30 2009, mark@summersault.com wrote:
> > How do you know this due a bug in Data::FormValidator and not another > > piece, like CGI.pm? > > > > If you could look into this issue further, it would be helpful. > > > > Mark > > > >
Subject: Re: [rt.cpan.org #45233] "can't get filehandle" when spaces in uploaded filenames
Date: Fri, 24 Apr 2009 08:35:55 -0400
To: bug-Data-FormValidator [...] rt.cpan.org
From: Mark Stosberg <mark [...] summersault.com>
Show quoted text
> Update: > > When using CGI::Simple instead of CGI.pm in C::A, then file_format() and > file_max_bytes() are working right, regardless of spaces in filenames.
These are great details. I can look into it some more. You could also post a link to the bug report on the DFV mailing list. Others may wish to be aware and help solve it. Mark
From: geconomou [...] gmail.com
On Fri Apr 24 08:36:25 2009, mark@summersault.com wrote: Show quoted text
> You could also post a link to the bug report on the DFV mailing list. > Others may wish to be aware and help solve it. > > Mark >
Did that. Moreover I'm reporting the related modules versions: CGI : 3.43 (also tried with 3.29) CGI::Simple : 1.109 Data::FormValidator::Constraints::Upload: 4.62 Data::FormValidator : 4.63 CGI::Uploader : 2.17 Regards, Giannis

Show quoted text
> The problem:
> When uploading files that have spaces in their filename, I get the
> following error:
> app.cgi: can't get filehandle for field named PhotoCat3 at
> /usr/local/share/perl/5.10.0/Data/FormValidator/Constraints/Upload.pm
> line 88.

Giannis,

I'm wondering if you've looked into this further since the last ticket comment. Did you make a final determination if this was a bug in Data::FormValidator, or a bug in CGI.pm?

     Mark

Closing, due to lack of further follow-up. Feel free to re-open of there is no information.