From e93251a9b63790b649761478fde8038adca557d0 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Fri, 22 Jul 2011 10:24:35 +0200 Subject: [PATCH] fix #723547 - fixed size directive parsing --- logrotate-3.8.0-rot-size.patch | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 logrotate-3.8.0-rot-size.patch diff --git a/logrotate-3.8.0-rot-size.patch b/logrotate-3.8.0-rot-size.patch new file mode 100644 index 0000000..08b78ba --- /dev/null +++ b/logrotate-3.8.0-rot-size.patch @@ -0,0 +1,44 @@ +Index: trunk/config.c +=================================================================== +--- trunk/config.c (revision 334) ++++ trunk/config.c (working copy) +@@ -891,7 +891,6 @@ + + if ((key = isolateValue(configFile, lineNum, opt, &start, + &buf, length)) != NULL) { +- free(opt); + int l = strlen(key) - 1; + if (key[l] == 'k') { + key[l] = '\0'; +@@ -903,6 +902,7 @@ + key[l] = '\0'; + multiplier = 1024 * 1024 * 1024; + } else if (!isdigit(key[l])) { ++ free(opt); + message(MESS_ERROR, "%s:%d unknown unit '%c'\n", + configFile, lineNum, key[l]); + if (newlog != defConfig) { +@@ -919,6 +919,7 @@ + if (*chptr) { + message(MESS_ERROR, "%s:%d bad size '%s'\n", + configFile, lineNum, key); ++ free(opt); + if (newlog != defConfig) { + state = STATE_ERROR; + continue; +@@ -926,11 +927,13 @@ + goto error; + } + } +- if (!strncmp(key, "size", 4)) { ++ if (!strncmp(opt, "size", 4)) { + newlog->criterium = ROT_SIZE; + newlog->threshhold = size; +- } else ++ } else { + newlog->minsize = size; ++ } ++ free(opt); + } + else { + free(opt);