summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLars Magne Ingebrigtsen <larsi@gnus.org>2013-08-13 20:22:04 +0200
committerLars Magne Ingebrigtsen <larsi@gnus.org>2013-08-13 20:22:04 +0200
commit66e7901a78f6186dec959d08a85d71a87d3b940f (patch)
tree8896cb40382dcdd4d3c5e6534cc40be33b465ebb /src
parent21c58ae2a804b00812d3e609806326ac5d301e34 (diff)
downloademacs-66e7901a78f6186dec959d08a85d71a87d3b940f.tar.gz
* image.c (imagemagick_filename_hint): Check for errors in the alist structure.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/image.c18
2 files changed, 18 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 6d2c5722bdf..af76a0c3780 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2013-08-13 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * image.c (imagemagick_filename_hint): Check for errors in the
+ alist structure.
+
2013-08-13 Eli Zaretskii <eliz@gnu.org>
* window.c (Fwindow_margins): Return nil when there's no marginal
diff --git a/src/image.c b/src/image.c
index 35cbbb631ae..3d2b325ded9 100644
--- a/src/image.c
+++ b/src/image.c
@@ -7853,19 +7853,27 @@ imagemagick_filename_hint (Lisp_Object spec)
{
Lisp_Object content_type = image_spec_value (spec, QCcontent_type, NULL);
Lisp_Object symbol = intern ("image-content-type-suffixes");
- Lisp_Object suffix;
+ Lisp_Object val;
char *name, *prefix = "/tmp/foo.";
if (NILP (Fboundp (symbol)))
return NULL;
- suffix = Fcar (Fcdr (Fassq (content_type, Fsymbol_value (symbol))));
- if (! STRINGP (suffix))
+ val = Fassq (content_type, Fsymbol_value (symbol));
+ if (! CONSP (val))
return NULL;
- name = xmalloc (strlen (prefix) + SBYTES (suffix) + 1);
+ val = Fcdr (val);
+ if (! CONSP (val))
+ return NULL;
+
+ val = Fcar (val);
+ if (! STRINGP (val))
+ return NULL;
+
+ name = xmalloc (strlen (prefix) + SBYTES (val) + 1);
strcpy(name, prefix);
- strcat(name, SDATA (suffix));
+ strcat(name, SDATA (val));
return name;
}