[interchange] Add image file check mechanism to verify file type before passing to
Greg Hanson
interchange-cvs at icdevgroup.org
Thu May 5 00:35:47 UTC 2016
commit 68d34396df797232e005e5bd164a1b8e72779bb6
Author: Greg Hanson <ghanson at endpoint.com>
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
More information about the interchange-cvs
mailing list