From 852111f3a6640d61ea1a1b2fd0cbf50623642927 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 20 Jul 2016 23:38:12 +0200 Subject: [PATCH] Fix lifetime bug in tzlookup * src/editfns.c (tzlookup): Fix storage lifetime bug when INTEGERP (zone) && settz. Problem found by Coverity Scan. --- src/editfns.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/editfns.c b/src/editfns.c index aed884ebe1c..61b2a871b73 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -146,6 +146,9 @@ xtzfree (timezone_t tz) static timezone_t tzlookup (Lisp_Object zone, bool settz) { + static char const tzbuf_format[] = "<%+.*"pI"d>%s%"pI"d:%02d:%02d"; + char const *trailing_tzbuf_format = tzbuf_format + sizeof "<%+.*"pI"d" - 1; + char tzbuf[sizeof tzbuf_format + 2 * INT_STRLEN_BOUND (EMACS_INT)]; char const *zone_string; timezone_t new_tz; @@ -158,9 +161,6 @@ tzlookup (Lisp_Object zone, bool settz) } else { - static char const tzbuf_format[] = "<%+.*"pI"d>%s%"pI"d:%02d:%02d"; - char const *trailing_tzbuf_format = tzbuf_format + sizeof "<%+.*"pI"d" - 1; - char tzbuf[sizeof tzbuf_format + 2 * INT_STRLEN_BOUND (EMACS_INT)]; bool plain_integer = INTEGERP (zone); if (EQ (zone, Qwall)) -- 2.39.5