changeset 12748:7b2dc2e33051

getdate: don't leak when TZ contains two or more '"'s * lib/getdate.y (get_date): Don't leak a copy of TZ for each double quote in TZ after the first one.
author Jim Meyering <meyering@redhat.com>
date Mon, 18 Jan 2010 08:23:24 +0100
parents 366ef0bb3316
children 0e0affb6a85d
files ChangeLog lib/getdate.y
diffstat 2 files changed, 6 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2010-01-18  Jim Meyering  <meyering@redhat.com>
 
+	getdate: don't leak when TZ contains two or more '"'s
+	* lib/getdate.y (get_date): Don't leak a copy of TZ for each
+	double quote in TZ after the first one.
+
 	readtokens: do not leak internal token_lengths buffer
 	* lib/readtokens.c (readtokens): Free the local, lengths,
 	when the supplied "token_lengths" parameter is NULL.
--- a/lib/getdate.y
+++ b/lib/getdate.y
@@ -1252,6 +1252,8 @@
             char tz1buf[TZBUFSIZE];
             bool large_tz = TZBUFSIZE < tzsize;
             bool setenv_ok;
+            /* Free tz0, in case this is the 2nd or subsequent time through. */
+            free (tz0);
             tz0 = get_tz (tz0buf);
             z = tz1 = large_tz ? xmalloc (tzsize) : tz1buf;
             for (s = tzbase; *s != '"'; s++)