File perl-Tk-XPM-loading-improve-error-message-for-short-files.patch of Package perl-Tk.11482
From 25c1da9e613890e824d6a5c51b07131d3f257f94 Mon Sep 17 00:00:00 2001
From: Slaven Rezic <slaven@rezic.de>
Date: Sat, 2 Feb 2019 14:59:46 +0100
Subject: [PATCH 2/3] XPM loading: improve error message for short files
---
pTk/mTk/additions/imgXPM.c | 3 +++
t/photo.t | 20 +++++++++++++++++++-
2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/pTk/mTk/additions/imgXPM.c b/pTk/mTk/additions/imgXPM.c
index 421b17d7..93af045e 100644
--- a/pTk/mTk/additions/imgXPM.c
+++ b/pTk/mTk/additions/imgXPM.c
@@ -440,6 +440,9 @@ CommonReadXPM(interp, handle, format, imageHandle, destX, destY,
while (((p = strchr(p,'\"')) == NULL)) {
p = Gets(handle, buffer,MAX_BUFFER);
if (p == NULL) {
+ sprintf(buffer, "%d", h);
+ Tcl_AppendResult(interp, "XPM image file is truncated; still ", buffer, " line(s) need to be read",
+ (char *) NULL);
return TCL_ERROR;
}
p = buffer;
diff --git a/t/photo.t b/t/photo.t
index 8d4c2a51..059b38a6 100644
--- a/t/photo.t
+++ b/t/photo.t
@@ -15,7 +15,7 @@ $numFormats++ unless $@;
my $mw = MainWindow->new();
$mw->geometry('+100+100');
-plan tests => (2*(7 * $numFormats) + 2 + 2 + 1 + 2 + 2);
+plan tests => (2*(7 * $numFormats) + 2 + 2 + 1 + 2 + 2 + 2);
my @files = ();
@@ -148,6 +148,24 @@ EOF
ok $image, "'/*' in XPM data caused no problem";
}
+{
+ # Error case: short read
+ my $image = eval { $mw->Photo(-data => <<'EOF') };
+/* XPM */
+static char *noname[] = {
+/* width height ncolors chars_per_pixel */
+"2 2 2 1",
+/* colors */
+" c #000000",
+". c #914800",
+/* pixels */
+".."
+};
+EOF
+ like $@, qr{^\QXPM image file is truncated; still 1 line(s) need to be read}, 'Expected error message about truncation';
+ ok !$image, "Truncated image was not created";
+}
+
$mw->after(2500,[destroy => $mw]);
MainLoop;
--
2.21.0