From: Paul Eggert Date: Wed, 20 Jul 2016 21:38:12 +0000 (+0200) Subject: Fix lifetime bug in tzlookup X-Git-Tag: emacs-26.0.90~1840^2~30 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=852111f3a6640d61ea1a1b2fd0cbf50623642927;p=emacs.git Fix lifetime bug in tzlookup * src/editfns.c (tzlookup): Fix storage lifetime bug when INTEGERP (zone) && settz. Problem found by Coverity Scan. --- 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))