diff options
author | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2013-08-13 20:22:04 +0200 |
---|---|---|
committer | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2013-08-13 20:22:04 +0200 |
commit | 66e7901a78f6186dec959d08a85d71a87d3b940f (patch) | |
tree | 8896cb40382dcdd4d3c5e6534cc40be33b465ebb /src | |
parent | 21c58ae2a804b00812d3e609806326ac5d301e34 (diff) | |
download | emacs-66e7901a78f6186dec959d08a85d71a87d3b940f.tar.gz |
* image.c (imagemagick_filename_hint): Check for errors in the alist structure.
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/image.c | 18 |
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; } |