diff --git a/0001-logrotate-3.18.0-fix-resource-leaks.patch b/0001-logrotate-3.18.0-fix-resource-leaks.patch deleted file mode 100644 index 9bfbd71..0000000 --- a/0001-logrotate-3.18.0-fix-resource-leaks.patch +++ /dev/null @@ -1,615 +0,0 @@ -From 471cf0a6a90e5d45f116f404e1276ea730dbece6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= -Date: Fri, 26 Mar 2021 17:18:09 +0100 -Subject: [PATCH 1/9] Do not report OOM incorrectly - -In case there is no file in the set to rotate `calloc(0, ...)` is called -, which might return NULL. - -Order the check for a zero number of files first, to void calling calloc -with a size of zero. - -Upstream-commit: 7b65b267d73970eb59061be907c8c35b4396ada9 -Signed-off-by: Kamil Dudka ---- - logrotate.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/logrotate.c b/logrotate.c -index 507c85a..a8c8480 100644 ---- a/logrotate.c -+++ b/logrotate.c -@@ -2212,11 +2212,6 @@ static int rotateLogSet(const struct logInfo *log, int force) - struct logState **state; - struct logNames **rotNames; - -- logHasErrors = calloc(log->numFiles, sizeof(int)); -- if (!logHasErrors) { -- message_OOM(); -- return 1; -- } - message(MESS_DEBUG, "\nrotating pattern: %s ", log->pattern); - if (force) { - message(MESS_DEBUG, "forced from command line "); -@@ -2277,10 +2272,15 @@ static int rotateLogSet(const struct logInfo *log, int force) - - if (log->numFiles == 0) { - message(MESS_DEBUG, "No logs found. Rotation not needed.\n"); -- free(logHasErrors); - return 0; - } - -+ logHasErrors = calloc(log->numFiles, sizeof(int)); -+ if (!logHasErrors) { -+ message_OOM(); -+ return 1; -+ } -+ - if (log->flags & LOG_FLAG_SU) { - if (switch_user(log->suUid, log->suGid) != 0) { - free(logHasErrors); --- -2.30.2 - - -From 96203f4cdc64e2df3d203231bd1247424a20875e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= -Date: Mon, 19 Apr 2021 15:35:37 +0200 -Subject: [PATCH 2/9] Unify asprintf usage - -Unify the error checking of asprintf(3). - -Also reset the target string pointer to NULL on error, if it is non- -local, since the content is undefined according to the specification. - -Also fix potential NULL-pointer usage in sprintf(3): - -logrotate.c:1595: - rotNames->dirName = malloc(strlen(ld) + strlen(log->oldDir) + 2); - sprintf(rotNames->dirName, "%s/%s", ld, log->oldDir); - -Upstream-commit: 5afcdeecc5a3bfe07671a3c05c7a301da9206ccd -Signed-off-by: Kamil Dudka ---- - config.c | 28 +++++++++++++--------------- - logrotate.c | 9 ++++++--- - 2 files changed, 19 insertions(+), 18 deletions(-) - -diff --git a/config.c b/config.c -index df2d90b..19dcfce 100644 ---- a/config.c -+++ b/config.c -@@ -815,21 +815,19 @@ int readAllConfigPaths(const char **paths) - - - for (i = 0; i < defTabooCount; i++) { -- int bytes; - char *pattern = NULL; - - /* generate a pattern by concatenating star (wildcard) to the - * suffix literal - */ -- bytes = asprintf(&pattern, "*%s", defTabooExts[i]); -- if (bytes != -1) { -- tabooPatterns[i] = pattern; -- tabooCount++; -- } else { -+ if (asprintf(&pattern, "*%s", defTabooExts[i]) < 0) { - free_2d_array(tabooPatterns, tabooCount); - message_OOM(); - return 1; - } -+ -+ tabooPatterns[i] = pattern; -+ tabooCount++; - } - - for (file = paths; *file; file++) { -@@ -1421,7 +1419,6 @@ static int readConfigFile(const char *configFile, struct logInfo *defConfig) - } - - while (*endtag) { -- int bytes; - char *pattern = NULL; - - chptr = endtag; -@@ -1437,10 +1434,11 @@ static int readConfigFile(const char *configFile, struct logInfo *defConfig) - RAISE_ERROR(); - } - tabooPatterns = tmp; -- bytes = asprintf(&pattern, "*%.*s", (int)(chptr - endtag), endtag); -+ if (asprintf(&pattern, "*%.*s", (int)(chptr - endtag), endtag) < 0) { -+ message_OOM(); -+ RAISE_ERROR(); -+ } - -- /* should test for malloc() failure */ -- assert(bytes != -1); - tabooPatterns[tabooCount] = pattern; - tabooCount++; - } -@@ -1481,7 +1479,6 @@ static int readConfigFile(const char *configFile, struct logInfo *defConfig) - } - - while (*endtag) { -- int bytes; - char *pattern = NULL; - char **tmp; - -@@ -1496,10 +1493,11 @@ static int readConfigFile(const char *configFile, struct logInfo *defConfig) - RAISE_ERROR(); - } - tabooPatterns = tmp; -- bytes = asprintf(&pattern, "%.*s", (int)(chptr - endtag), endtag); -+ if (asprintf(&pattern, "%.*s", (int)(chptr - endtag), endtag) < 0) { -+ message_OOM(); -+ RAISE_ERROR(); -+ } - -- /* should test for malloc() failure */ -- assert(bytes != -1); - tabooPatterns[tabooCount] = pattern; - tabooCount++; - -@@ -1540,7 +1538,7 @@ static int readConfigFile(const char *configFile, struct logInfo *defConfig) - env_home = pwd->pw_dir; - } - -- if (asprintf(&new_key, "%s/%s", env_home, key + 2) == -1) { -+ if (asprintf(&new_key, "%s/%s", env_home, key + 2) < 0) { - message_OOM(); - RAISE_ERROR(); - } -diff --git a/logrotate.c b/logrotate.c -index a8c8480..e294352 100644 ---- a/logrotate.c -+++ b/logrotate.c -@@ -1576,9 +1576,9 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - ld = dirname(logpath); - if (log->oldDir) { - if (log->oldDir[0] != '/') { -- rotNames->dirName = -- malloc(strlen(ld) + strlen(log->oldDir) + 2); -- sprintf(rotNames->dirName, "%s/%s", ld, log->oldDir); -+ if (asprintf(&rotNames->dirName, "%s/%s", ld, log->oldDir) < 0) { -+ rotNames->dirName = NULL; -+ } - } else - rotNames->dirName = strdup(log->oldDir); - } else -@@ -1983,6 +1983,7 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - if (asprintf(&(rotNames->finalName), "%s/%s%s%s", rotNames->dirName, - rotNames->baseName, dext_str, fileext) < 0) { - message_OOM(); -+ rotNames->finalName = NULL; - return 1; - } - if (asprintf(&destFile, "%s%s", rotNames->finalName, compext) < 0) { -@@ -2001,6 +2002,7 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - if (asprintf(&(rotNames->finalName), "%s/%s.%d%s", rotNames->dirName, - rotNames->baseName, logStart, fileext) < 0) { - message_OOM(); -+ rotNames->finalName = NULL; - } - } - -@@ -2084,6 +2086,7 @@ static int rotateSingleLog(const struct logInfo *log, unsigned logNum, - free(rotNames->disposeName); - if (asprintf(&rotNames->disposeName, "%s%s", rotNames->finalName, ext) < 0) { - message_OOM(); -+ rotNames->disposeName = NULL; - return 1; - } - --- -2.30.2 - - -From 3cf921e0d58993b064cd6d52b44835008345f498 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= -Date: Mon, 19 Apr 2021 15:40:19 +0200 -Subject: [PATCH 3/9] Update custom asprintf implementation - -Check for vsnprintf(3) failures. - -Silence conversion warnings. - -Do not call exit(2) on allocation failure, but return -1 like the -specification says. All callers check the return value, since they -need to handle standard asprintf(3) implementations. - -Upstream-commit: f917b31dbb47992bf5c5342c7312ddb2e64efc40 -Signed-off-by: Kamil Dudka ---- - config.c | 20 ++++++++------------ - 1 file changed, 8 insertions(+), 12 deletions(-) - -diff --git a/config.c b/config.c -index 19dcfce..0d79980 100644 ---- a/config.c -+++ b/config.c -@@ -61,24 +61,20 @@ int asprintf(char **string_ptr, const char *format, ...) - - va_start(arg, format); - size = vsnprintf(NULL, 0, format, arg); -- size++; - va_end(arg); -- va_start(arg, format); -- str = malloc(size); -+ if (size < 0) { -+ return -1; -+ } -+ str = malloc((size_t)size + 1); - if (str == NULL) { -- va_end(arg); -- /* -- * Strictly speaking, GNU asprintf doesn't do this, -- * but the caller isn't checking the return value. -- */ -- message_OOM(); -- exit(1); -+ return -1; - } -- rv = vsnprintf(str, size, format, arg); -+ va_start(arg, format); -+ rv = vsnprintf(str, (size_t)size + 1, format, arg); - va_end(arg); - - *string_ptr = str; -- return (rv); -+ return rv; - } - - #endif --- -2.30.2 - - -From ace9818a606a0c96bb6e4da479ed151650b8fa3a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= -Date: Mon, 19 Apr 2021 15:45:55 +0200 -Subject: [PATCH 4/9] Use asprintf instead of split malloc + sprintf - -Use asprintf(3) instead of split usage of malloc(3) and sprintf(3) to -reduce the chance of potential size inconsistencies. - -Upstream-commit: 001352baa924f021748513b6d09d37eca754d5cc -Signed-off-by: Kamil Dudka ---- - config.c | 5 ++--- - logrotate.c | 25 ++++++++++++------------- - 2 files changed, 14 insertions(+), 16 deletions(-) - -diff --git a/config.c b/config.c -index 0d79980..2905ff7 100644 ---- a/config.c -+++ b/config.c -@@ -1886,13 +1886,12 @@ duperror: - continue; - } - } -- ld = malloc(strlen(dirName) + strlen(newlog->oldDir) + 2); -- if (ld == NULL) { -+ if (asprintf(&ld, "%s/%s", dirName, newlog->oldDir) < 0) { - message_OOM(); - free(dirpath); - goto error; - } -- sprintf(ld, "%s/%s", dirName, newlog->oldDir); -+ - free(dirpath); - - if (newlog->oldDir[0] != '/') { -diff --git a/logrotate.c b/logrotate.c -index e294352..a72329e 100644 ---- a/logrotate.c -+++ b/logrotate.c -@@ -1810,15 +1810,6 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - } - } - -- /* adding 2 due to / and \0 being added by snprintf */ -- rotNames->firstRotated = -- malloc(strlen(rotNames->dirName) + strlen(rotNames->baseName) + -- strlen(fileext) + strlen(compext) + DATEEXT_LEN + 2 ); -- if (rotNames->firstRotated == NULL) { -- message_OOM(); -- return 1; -- } -- - if (log->flags & LOG_FLAG_DATEEXT) { - /* glob for compressed files with our pattern - * and compress ext */ -@@ -1882,9 +1873,13 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - rotNames->disposeName = NULL; - } - /* firstRotated is most recently created/compressed rotated log */ -- sprintf(rotNames->firstRotated, "%s/%s%s%s%s", -+ if (asprintf(&rotNames->firstRotated, "%s/%s%s%s%s", - rotNames->dirName, rotNames->baseName, dext_str, fileext, -- (log->flags & LOG_FLAG_DELAYCOMPRESS) ? "" : compext); -+ (log->flags & LOG_FLAG_DELAYCOMPRESS) ? "" : compext) < 0) { -+ message_OOM(); -+ rotNames->firstRotated = NULL; -+ return 1; -+ } - globfree(&globResult); - free(glob_pattern); - } else { -@@ -1915,9 +1910,13 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - } - } - -- sprintf(rotNames->firstRotated, "%s/%s.%d%s%s", rotNames->dirName, -+ if (asprintf(&rotNames->firstRotated, "%s/%s.%d%s%s", rotNames->dirName, - rotNames->baseName, logStart, fileext, -- (log->flags & LOG_FLAG_DELAYCOMPRESS) ? "" : compext); -+ (log->flags & LOG_FLAG_DELAYCOMPRESS) ? "" : compext) < 0) { -+ message_OOM(); -+ rotNames->firstRotated = NULL; -+ return 1; -+ } - - for (i = rotateCount + logStart - 1; (i >= 0) && !hasErrors; i--) { - free(newName); --- -2.30.2 - - -From e8a655ef1977add152d79c4dc8148fe7b1c9bca2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= -Date: Mon, 19 Apr 2021 17:52:48 +0200 -Subject: [PATCH 5/9] Mark read-only string variable const - -Prevent it accidentally being passed to free(3) or similar. - -Upstream-commit: 2231aba823ff6e5a18d996e81ef63df0871224dd -Signed-off-by: Kamil Dudka ---- - logrotate.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/logrotate.c b/logrotate.c -index a72329e..7d49261 100644 ---- a/logrotate.c -+++ b/logrotate.c -@@ -1567,7 +1567,7 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - state->lastRotated = now; - - { -- char *ld; -+ const char *ld; - char *logpath = strdup(log->files[logNum]); - if (logpath == NULL) { - message_OOM(); --- -2.30.2 - - -From c06f20f781c74b2256e8f1757433db7e043b4ddf Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= -Date: Mon, 19 Apr 2021 17:59:21 +0200 -Subject: [PATCH 6/9] Limit scope of variable - -Limit the scope of a variable, by splitting it into several distinct -block scope variables. - -This makes some asprintf(3) calls obsolete, and improves readability by -splitting the purpose of the variable. - -Upstream-commit: b37fb75f569b3ddde30dd85184ea160f63abb7d5 -Signed-off-by: Kamil Dudka ---- - logrotate.c | 19 ++++++++----------- - 1 file changed, 8 insertions(+), 11 deletions(-) - -diff --git a/logrotate.c b/logrotate.c -index 7d49261..962ac55 100644 ---- a/logrotate.c -+++ b/logrotate.c -@@ -1529,7 +1529,6 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - struct logState *state, struct logNames *rotNames) - { - struct tm now; -- char *oldName = NULL; - const char *compext = ""; - const char *fileext = ""; - int hasErrors = 0; -@@ -1770,11 +1769,8 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - sortGlobResult(&globResult, strlen(rotNames->dirName) + 1 + strlen(rotNames->baseName), dformat); - for (glob_count = 0; glob_count < globResult.gl_pathc && !hasErrors; glob_count++) { - struct stat sbprev; -+ const char *oldName = globResult.gl_pathv[glob_count]; - -- if (asprintf(&oldName, "%s", (globResult.gl_pathv)[glob_count]) < 0) { -- message_OOM(); -- return 1; -- } - if (stat(oldName, &sbprev)) { - if (errno == ENOENT) - message(MESS_DEBUG, "previous log %s does not exist\n", oldName); -@@ -1783,7 +1779,6 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - } else { - hasErrors = compressLogFile(oldName, log, &sbprev); - } -- free(oldName); - } - } else { - message(MESS_DEBUG, -@@ -1793,6 +1788,7 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - free(glob_pattern); - } else { - struct stat sbprev; -+ char *oldName; - if (asprintf(&oldName, "%s/%s.%d%s", rotNames->dirName, - rotNames->baseName, logStart, fileext) < 0) { - message_OOM(); -@@ -1853,16 +1849,14 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - } - if (mail_out != (size_t)-1) { - /* oldName is oldest Backup found (for unlink later) */ -- if (asprintf(&oldName, "%s", (globResult.gl_pathv)[mail_out]) < 0) { -- message_OOM(); -- return 1; -- } -+ const char *oldName = globResult.gl_pathv[mail_out]; - rotNames->disposeName = strdup(oldName); - if (rotNames->disposeName == NULL) { - message_OOM(); -+ globfree(&globResult); -+ free(glob_pattern); - return 1; - } -- free(oldName); - } else { - free(rotNames->disposeName); - rotNames->disposeName = NULL; -@@ -1878,6 +1872,8 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - (log->flags & LOG_FLAG_DELAYCOMPRESS) ? "" : compext) < 0) { - message_OOM(); - rotNames->firstRotated = NULL; -+ globfree(&globResult); -+ free(glob_pattern); - return 1; - } - globfree(&globResult); -@@ -1885,6 +1881,7 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - } else { - int i; - char *newName = NULL; -+ char *oldName; - - if (rotateCount == -1) { - rotateCount = findLastRotated(rotNames, fileext, compext); --- -2.30.2 - - -From 1a1eb69e6c4ae403edceb411cb0bbc80473e2527 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= -Date: Tue, 20 Apr 2021 17:41:16 +0200 -Subject: [PATCH 7/9] Free memory on noolddir configuration - -Consider the following configuration: - olddir /var/log/foo - noolddir - -Do not leak the memory of the initial olddir path. - -Upstream-commit: 59e8e321d3221a3beaf7b9c99b17d5cb7dbcfaf0 -Signed-off-by: Kamil Dudka ---- - config.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/config.c b/config.c -index 2905ff7..b7406f5 100644 ---- a/config.c -+++ b/config.c -@@ -1134,7 +1134,7 @@ static int readConfigFile(const char *configFile, struct logInfo *defConfig) - if (newlog->dateformat == NULL) - continue; - } else if (!strcmp(key, "noolddir")) { -- newlog->oldDir = NULL; -+ freeLogItem(oldDir); - } else if (!strcmp(key, "mailfirst")) { - newlog->flags |= LOG_FLAG_MAILFIRST; - } else if (!strcmp(key, "maillast")) { --- -2.30.2 - - -From 4aabfd0fe19832ba1df8919356d1d2d4b463937d Mon Sep 17 00:00:00 2001 -From: Kamil Dudka -Date: Mon, 3 May 2021 15:14:09 +0200 -Subject: [PATCH 8/9] readConfigFile: release `globerr_msg` on all code paths - -This eliminates the following reports by Coverity: - -Error: RESOURCE_LEAK (CWE-772): -logrotate-3.18.0.18_7a4d/config.c:1798: alloc_arg: "asprintf" allocates memory that is stored into "globerr_msg". [Note: The source code implementation of the function has been overridden by a builtin model.] -logrotate-3.18.0.18_7a4d/config.c:2116: leaked_storage: Variable "globerr_msg" going out of scope leaks the storage it points to. - -Error: RESOURCE_LEAK (CWE-772): -logrotate-3.18.0.18_7a4d/config.c:1798: alloc_arg: "asprintf" allocates memory that is stored into "globerr_msg". [Note: The source code implementation of the function has been overridden by a builtin model.] -logrotate-3.18.0.18_7a4d/config.c:2122: leaked_storage: Variable "globerr_msg" going out of scope leaks the storage it points to. - -Closes: https://github.com/logrotate/logrotate/pull/387 - -Upstream-commit: 97f841be2bb52b9ac00cd564a6eb0a853d1017bd -Signed-off-by: Kamil Dudka ---- - config.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/config.c b/config.c -index b7406f5..91fd412 100644 ---- a/config.c -+++ b/config.c -@@ -2086,12 +2086,14 @@ next_state: ; - - munmap(buf, length); - close(fd); -+ free(globerr_msg); - return logerror; - error: - /* free is a NULL-safe operation */ - free(key); - munmap(buf, length); - close(fd); -+ free(globerr_msg); - return 1; - } - --- -2.30.2 - - -From b5610cd1b0bc2cf9ab887007a953fbf6340cb150 Mon Sep 17 00:00:00 2001 -From: Kamil Dudka -Date: Mon, 3 May 2021 15:17:59 +0200 -Subject: [PATCH 9/9] prerotateSingleLog: release `oldName` on all code paths - -This eliminates the following reports by Coverity: - -Error: RESOURCE_LEAK (CWE-772): -logrotate-3.18.0.18_7a4d/logrotate.c:1911: alloc_arg: "asprintf" allocates memory that is stored into "oldName". [Note: The source code implementation of the function has been overridden by a builtin model.] -logrotate-3.18.0.18_7a4d/logrotate.c:1919: noescape: Resource "oldName" is not freed or pointed-to in "strdup". -logrotate-3.18.0.18_7a4d/logrotate.c:1922: leaked_storage: Variable "oldName" going out of scope leaks the storage it points to. - -Error: RESOURCE_LEAK (CWE-772): -logrotate-3.18.0.18_7a4d/logrotate.c:1911: alloc_arg: "asprintf" allocates memory that is stored into "oldName". [Note: The source code implementation of the function has been overridden by a builtin model.] -logrotate-3.18.0.18_7a4d/logrotate.c:1919: noescape: Resource "oldName" is not freed or pointed-to in "strdup". -logrotate-3.18.0.18_7a4d/logrotate.c:1931: leaked_storage: Variable "oldName" going out of scope leaks the storage it points to. - -Closes: https://github.com/logrotate/logrotate/pull/387 - -Upstream-commit: 85bc130b19344a3d9c8b472142df14ddcd0a166d -Signed-off-by: Kamil Dudka ---- - logrotate.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/logrotate.c b/logrotate.c -index 962ac55..d3f2825 100644 ---- a/logrotate.c -+++ b/logrotate.c -@@ -1903,6 +1903,7 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - rotNames->disposeName = strdup(oldName); - if (rotNames->disposeName == NULL) { - message_OOM(); -+ free(oldName); - return 1; - } - } -@@ -1911,6 +1912,7 @@ static int prerotateSingleLog(const struct logInfo *log, unsigned logNum, - rotNames->baseName, logStart, fileext, - (log->flags & LOG_FLAG_DELAYCOMPRESS) ? "" : compext) < 0) { - message_OOM(); -+ free(oldName); - rotNames->firstRotated = NULL; - return 1; - } --- -2.30.2 - diff --git a/0002-logrotate-3.18.0-copytruncate-doc.patch b/0002-logrotate-3.18.0-copytruncate-doc.patch deleted file mode 100644 index 4c6e482..0000000 --- a/0002-logrotate-3.18.0-copytruncate-doc.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 4810afca1223099c1546da8d73d653c0d1eff96e Mon Sep 17 00:00:00 2001 -From: Kamil Dudka -Date: Tue, 27 Apr 2021 18:36:30 +0200 -Subject: [PATCH 1/2] logrotate.8: unify documentation of - copy/copytruncate/renamecopy - -Bug: https://bugzilla.redhat.com/1934629 - -Closes: https://github.com/logrotate/logrotate/pull/386 - -Upstream-commit: 6ac9fe5759678b4c2b312eea490ebbae25092213 -Signed-off-by: Kamil Dudka ---- - logrotate.8.in | 18 +++++++++++++----- - 1 file changed, 13 insertions(+), 5 deletions(-) - -diff --git a/logrotate.8.in b/logrotate.8.in -index f27c279..8064d68 100644 ---- a/logrotate.8.in -+++ b/logrotate.8.in -@@ -411,7 +411,8 @@ Make a copy of the log file, but don't change the original at all. - This option can be used, for instance, to make a snapshot of the current - log file, or when some other utility needs to truncate or parse the file. - When this option is used, the \fBcreate\fR option will have no effect, --as the old log file stays in place. -+as the old log file stays in place. The \fBcopy\fR option allows storing -+rotated log files on the different devices using \fBolddir\fR directive. - - .TP - \fBnocopy\fR -@@ -427,7 +428,9 @@ and thus might continue writing (appending) to the previous log file forever. - Note that there is a very small time slice between copying the file and - truncating it, so some logging data might be lost. - When this option is used, the \fBcreate\fR option will have no effect, --as the old log file stays in place. -+as the old log file stays in place. The \fBcopytruncate\fR option allows -+storing rotated log files on the different devices using \fBolddir\fR -+directive. - - .TP - \fBnocopytruncate\fR -@@ -438,9 +441,14 @@ Do not truncate the original log file in place after creating a copy - \fBrenamecopy\fR - Log file is renamed to temporary filename in the same directory by adding - ".tmp" extension to it. After that, \fBpostrotate\fR script is run --and log file is copied from temporary filename to final filename. This allows --storing rotated log files on the different devices using \fBolddir\fR --directive. In the end, temporary filename is removed. -+and log file is copied from temporary filename to final filename. In the end, -+temporary filename is removed. The \fBrenamecopy\fR option allows storing -+rotated log files on the different devices using \fBolddir\fR directive. -+ -+.TP -+\fBnorenamecopy\fR -+Do not rename and copy the original log file -+(this overrides the \fBrenamecopy\fR option). - - .TP - \fBshred\fR --- -2.30.2 - diff --git a/0003-logrotate-3.18.0-renamecopy-excl.patch b/0003-logrotate-3.18.0-renamecopy-excl.patch deleted file mode 100644 index 9cdf44a..0000000 --- a/0003-logrotate-3.18.0-renamecopy-excl.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 337eb1492f8b694542d704c7a4612e3211f717e5 Mon Sep 17 00:00:00 2001 -From: Kamil Dudka -Date: Tue, 27 Apr 2021 20:52:32 +0200 -Subject: [PATCH 2/2] make `renamecopy` and `copytruncate` override each other - -These option cannot work together. This rule prevents unnecessary -rotation failure in case one of the options comes from the global -configuration and the other one from log-specific configuration. - -Bug: https://bugzilla.redhat.com/1934601 - -Closes: https://github.com/logrotate/logrotate/pull/386 - -Upstream-commit: fe53a0efd21c11dbe9705564f92f5d9aa6bf855e -Signed-off-by: Kamil Dudka ---- - config.c | 2 ++ - logrotate.8.in | 3 ++- - test/test-config.24.in | 3 +++ - test/test-config.58.in | 3 +++ - 4 files changed, 10 insertions(+), 1 deletion(-) - -diff --git a/config.c b/config.c -index 91fd412..1bca9e4 100644 ---- a/config.c -+++ b/config.c -@@ -1106,10 +1106,12 @@ static int readConfigFile(const char *configFile, struct logInfo *defConfig) - newlog->flags &= ~LOG_FLAG_SHAREDSCRIPTS; - } else if (!strcmp(key, "copytruncate")) { - newlog->flags |= LOG_FLAG_COPYTRUNCATE; -+ newlog->flags &= ~LOG_FLAG_TMPFILENAME; - } else if (!strcmp(key, "nocopytruncate")) { - newlog->flags &= ~LOG_FLAG_COPYTRUNCATE; - } else if (!strcmp(key, "renamecopy")) { - newlog->flags |= LOG_FLAG_TMPFILENAME; -+ newlog->flags &= ~LOG_FLAG_COPYTRUNCATE; - } else if (!strcmp(key, "norenamecopy")) { - newlog->flags &= ~LOG_FLAG_TMPFILENAME; - } else if (!strcmp(key, "copy")) { -diff --git a/logrotate.8.in b/logrotate.8.in -index 8064d68..f0aa23f 100644 ---- a/logrotate.8.in -+++ b/logrotate.8.in -@@ -430,7 +430,7 @@ truncating it, so some logging data might be lost. - When this option is used, the \fBcreate\fR option will have no effect, - as the old log file stays in place. The \fBcopytruncate\fR option allows - storing rotated log files on the different devices using \fBolddir\fR --directive. -+directive. The \fBcopytruncate\fR option implies \fBnorenamecopy\fR. - - .TP - \fBnocopytruncate\fR -@@ -444,6 +444,7 @@ Log file is renamed to temporary filename in the same directory by adding - and log file is copied from temporary filename to final filename. In the end, - temporary filename is removed. The \fBrenamecopy\fR option allows storing - rotated log files on the different devices using \fBolddir\fR directive. -+The \fBrenamecopy\fR option implies \fBnocopytruncate\fR. - - .TP - \fBnorenamecopy\fR -diff --git a/test/test-config.24.in b/test/test-config.24.in -index 35cfcd3..7a2a760 100644 ---- a/test/test-config.24.in -+++ b/test/test-config.24.in -@@ -1,5 +1,8 @@ - create - -+# will be overridden by copytruncate -+renamecopy -+ - &DIR&/test*.log { - daily - copytruncate -diff --git a/test/test-config.58.in b/test/test-config.58.in -index 34906da..79058be 100644 ---- a/test/test-config.58.in -+++ b/test/test-config.58.in -@@ -1,5 +1,8 @@ - create - -+# will be overridden by renamecopy -+copytruncate -+ - &DIR&/test.log { - renamecopy - weekly --- -2.30.2 - diff --git a/logrotate-3.18.0.tar.xz.asc b/logrotate-3.18.0.tar.xz.asc deleted file mode 100644 index 070d387..0000000 --- a/logrotate-3.18.0.tar.xz.asc +++ /dev/null @@ -1,16 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQIzBAABCAAdFiEEmSqW4HUFbnnNghT5hz2zdXKjezYFAl/4CyoACgkQhz2zdXKj -ezaIHQ/+Kn6gOB6kHkgsem0+l3jDxbpgxSq9P9MiLYE43TPDTavlChVxSLBf2LqM -NAsIoyD57tFpnO9HcnCVYhkP2LLLnGE7io5ILLbmSxR1tHALh/ilhP1CLYJEXgij -tmclWiUqWD4GDwpLCmly0rY666a2Y/lqvmi7kb754ftd3vWQkXTAydvpUNkYutr+ -2a5TnEo7Mr/H/Fdz9REvYK9SFH4plspaL+g8C3zXgfxBhiIRQgyEitrwbDytOcUH -aW6wsPpfyZ7sU7q6bnP/UaPeK+GnB5GNNyw5kBNVsn1KTOuzGv1Y4xOiIEAN0Tpc -6Vv4swDGMwV3AF5HRwJ4FR44Avqvhv8w7sWyl/EfdyS/lVGpkAkqNRkNjxpz9Gv7 -MK9Qqe6noZJFV/1oBWvqdMymUAvm/En11llgVNQ11VxPWzNXlegTJ8ZcbxwfW3E4 -n057iI+mbri69dhx8sLhWbiz5qsFtiGDPebu6cZSox4a8SOeQfAG3uYq/q38lRz8 -NGALL8XIsAdDezB6/yKza7uSXAY0KHWcPlwjG6+4XuVxVD4NNK7NvyMebVbWNLe1 -TRHJ45PyVsqvceksq3uUhia3lVzM+duMmYb6Qj/jHnHrcs4wtYRg8NCPU3kzXnEY -TpZf0ZtobS7rQiaUWHgNH5RMjGXMGpzKh095XqHbiBv5D74GfDg= -=zSpZ ------END PGP SIGNATURE----- diff --git a/logrotate-3.18.1.tar.xz.asc b/logrotate-3.18.1.tar.xz.asc new file mode 100644 index 0000000..ae6d583 --- /dev/null +++ b/logrotate-3.18.1.tar.xz.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEEmSqW4HUFbnnNghT5hz2zdXKjezYFAmCnuBYACgkQhz2zdXKj +ezYHVhAAj1FztazRPopzx0PRrxdJ04+eaDtwbblZcH6N2NUCSnn/jMpx3iKZgogJ +WmA/SzaK9BBh4VQhi9kphTyTRcXQc0c0ApieVeKNfkrIQImfigcrlHzA3aBo7fhb +xLQqgPqBV+9l5hxaqKlShEgRN13FwN59PiYeirbHQfONMTe/OJajCysZExrQQ584 +dVfpmmXBXg1HpZlKat0ZNlEzaguapIPMsTaowbkkb7iOl606K6U6dT+SkRX9Peo8 +4FlE2OirnF7sXy6fggVOZsA4va/qdSMneA/QosfvugosEL6MUgQ0928VhfD30VAl +wEeIi+LAzs/Dm92f5b9D/KwQhUUVdoLCFj46u19TN4CtR/DM5r4bMKKqzo+V1Nzk +/2amuVwAPb/Lz5mqSdoocgHoG1pHPRCOFDhKmcYKcT9SIyU4lJvbgaazwsXXOCCH +qd6iIqmxvQdKWRPXF9Y6wSBVr6TObyc9G2NmrpqBXefep6zt4qeQyekzWGGS/qNc +MfJv16MZEGcEExRdTo4L5z6B9cbVZix0XLeybwcCchf70lzRFiDAMe4dvQfkYlYC +XvyCR+mWRIja2cgatCFJOJotMnbjqnxg8wgZVGvpcnSc+9vCmquvgnmmWNi1HcjV +WWHHjI8V8l0FGSyXATk/B8iFrIOstZwxqcsgF9Dk8VYsaEri06M= +=uDcC +-----END PGP SIGNATURE----- diff --git a/logrotate.spec b/logrotate.spec index 1305200..34e3fb8 100644 --- a/logrotate.spec +++ b/logrotate.spec @@ -1,21 +1,12 @@ Summary: Rotates, compresses, removes and mails system log files Name: logrotate -Version: 3.18.0 -Release: 3%{?dist} +Version: 3.18.1 +Release: 1%{?dist} License: GPLv2+ URL: https://github.com/logrotate/logrotate Source0: https://github.com/logrotate/logrotate/releases/download/%{version}/logrotate-%{version}.tar.xz Source1: rwtab -# fix resource leaks reported by Coverity -Patch: 0001-logrotate-3.18.0-fix-resource-leaks.patch - -# unify documentation of copy/copytruncate/renamecopy (#1934629) -Patch: 0002-logrotate-3.18.0-copytruncate-doc.patch - -# make `renamecopy` and `copytruncate` override each other (#1934601) -Patch: 0003-logrotate-3.18.0-renamecopy-excl.patch - BuildRequires: acl BuildRequires: automake BuildRequires: gcc @@ -116,6 +107,9 @@ fi %config(noreplace) %{_sysconfdir}/rwtab.d/logrotate %changelog +* Fri May 21 2021 Kamil Dudka - 3.18.1-1 +- new upstream version 3.18.0 + * Tue May 04 2021 Kamil Dudka - 3.18.0-3 - make `renamecopy` and `copytruncate` override each other (#1934601) - unify documentation of copy/copytruncate/renamecopy (#1934629) diff --git a/sources b/sources index 939c294..3a0c85b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (logrotate-3.18.0.tar.xz) = 3b44168af53779d7f53e686c192a04ff97ddecca32da66a0c4ac6284fb55dbb9ded5a300652621963ccea91aeb6bebc4cec8a22cc94597484456742442f026be +SHA512 (logrotate-3.18.1.tar.xz) = d559bf188f587096433887d3a89040fa82f4db35fbae84a9e6d04c425e6d004cbed9bd48bb3eaf53e424a82e1e777b02e55ee17ecdb4c6c0ec3db81964db5b14