[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