[interchange] Add image file check mechanism to verify file type before passing to
Greg Hanson <[email protected]> Thu, 05 May 2016 00:35:47 +0000
| Newsgroups | gmane.comp.web.interchange.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit 68d34396df797232e005e5bd164a1b8e72779bb6 Author: Greg Hanson <[email protected]> Date: Wed May 4 20:35:06 2016 -0400 Add image file check mechanism to verify file type before passing to mogrify code/SystemTag/image.tag | 29 ++++++++++++++++++++++++++--- 1 files changed, 26 insertions(+), 3 deletions(-) --- diff --git a/code/SystemTag/image.tag b/code/SystemTag/image.tag index 6d4de2a..f7ec938 100644 --- a/code/SystemTag/image.tag +++ b/code/SystemTag/image.tag @@ -9,13 +9,15 @@ UserTag image Order src UserTag image AttrAlias geometry makesize UserTag image AttrAlias resize makesize UserTag image AddAttr -UserTag image Version 1.26 +UserTag image Version 1.27 UserTag image Routine <<EOR sub { my ($src, $opt) = @_; my ($image, $path, $secure, $sku); my ($imagedircurrent, $imagedir, $imagedirsecure); + use Image::Size; + my @descriptionfields = grep /\S/, split /\s+/, $opt->{descriptionfields} || $::Variable->{DESCRIPTIONFIELDS} || $Vend::Cfg->{DescriptionField}; @descriptionfields = qw( description ) if ! @descriptionfields; @@ -28,6 +30,22 @@ sub { my $filere = qr/\.\w{2,4}$/; my $absurlre = qr!^(?i:https?)://!; + my $verify_image = sub { + my $file = shift; + + return unless -f $file; + + my ($imgx, $imgy, $error) = imgsize($file); + + if(! $imgx) { + ::logError("Image::Size error on verify-image: $error"); + return undef; + } + + return 1 if ($error =~ /(jpg|jpeg|gif|png|bmp|tif|ico|xbm)/i); + return undef; + }; + if ($opt->{ui}) { # unless no image dir specified, add locale string my $locale = $Scratch->{mv_locale} ? $Scratch->{mv_locale} : 'en_US'; @@ -222,6 +240,12 @@ sub { } } last MOGIT unless $exec; + + unless ($verify_image->($newpath)){ + logError("Image file not valid image:%s", $newpath); + last MOGIT; + } + system qq{$exec -geometry "$siz" '$newpath'}; if($?) { logError("%s: Unable to mogrify image '%s'", 'image tag', $newpath); @@ -241,8 +265,7 @@ sub { if ($opt->{getsize} and $path) { eval { - require Image::Size; - my ($width, $height) = Image::Size::imgsize($path); + my ($width, $height) = imgsize($path); $opt->{height} = $height if defined($height) and not exists($opt->{height}); $opt->{width} = $width