OBS User unknown 2007-08-16 16:19:25 +00:00 committed by Git OBS Bridge
parent 0c192715da
commit 8fcaee7cda
9 changed files with 425 additions and 14 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cdfcf9a1e632da8ed054c14833b6e06ec82773353d5a06588b3d7c649b705017
size 33844

View File

@ -0,0 +1,11 @@
--- logrotate-3.7.5/config.c.cfengine 2007-05-14 14:18:44.000000000 +0200
+++ logrotate-3.7.5/config.c 2007-05-14 14:19:06.000000000 +0200
@@ -31,7 +31,7 @@
#endif
static char *defTabooExts[] = { ".rpmsave", ".rpmorig", "~", ",v",
- ".rpmnew", ".swp"
+ ".rpmnew", ".swp", ".cfsaved"
};
static int defTabooCount = sizeof(defTabooExts) / sizeof(char *);

View File

@ -0,0 +1,12 @@
--- logrotate-3.7.5/examples/logrotate-default.date 2007-05-16 16:36:06.000000000 +0200
+++ logrotate-3.7.5/examples/logrotate-default 2007-05-16 16:36:50.000000000 +0200
@@ -8,6 +8,9 @@
# create new (empty) log files after rotating old ones
create
+# use date as a suffix of rotated file
+dateext
+
# uncomment this if you want your log files compressed
#compress

View File

@ -0,0 +1,155 @@
--- logrotate-3.7.5/logrotate.c.errorHandling 2007-03-01 12:05:30.000000000 +0100
+++ logrotate-3.7.5/logrotate.c 2007-03-31 12:50:33.000000000 +0200
@@ -1043,6 +1043,8 @@
message(MESS_ERROR, "error running first action script "
"for %s\n", log->pattern);
hasErrors = 1;
+ /* finish early, firstaction failed, affects all logs in set */
+ return hasErrors;
}
}
}
@@ -1067,16 +1069,25 @@
hasErrors |= logHasErrors[i];
}
- if (log->pre) {
+ if (log->pre
+ && (! ( (logHasErrors[j] && !(log->flags & LOG_FLAG_SHAREDSCRIPTS))
+ || (hasErrors && (log->flags & LOG_FLAG_SHAREDSCRIPTS)) ) )) {
if (!numRotated) {
message(MESS_DEBUG, "not running prerotate script, "
"since no logs will be rotated\n");
} else {
message(MESS_DEBUG, "running prerotate script\n");
if (runScript(log->pattern, log->pre)) {
- message(MESS_ERROR,
- "error running shared prerotate script "
- "for %s\n", log->pattern);
+ if (log->flags & LOG_FLAG_SHAREDSCRIPTS)
+ message(MESS_ERROR,
+ "error running shared prerotate script "
+ "for '%s'\n", log->pattern);
+ else {
+ message(MESS_ERROR,
+ "error running non-shared prerotate script "
+ "for %s of '%s'\n", log->files[j], log->pattern);
+ }
+ logHasErrors[j] = 1;
hasErrors = 1;
}
}
@@ -1085,22 +1096,33 @@
for (i = j;
((log->flags & LOG_FLAG_SHAREDSCRIPTS) && i < log->numFiles)
|| (!(log->flags & LOG_FLAG_SHAREDSCRIPTS) && i == j); i++) {
- if (!logHasErrors[i]) {
+ if (! ( (logHasErrors[i] && !(log->flags & LOG_FLAG_SHAREDSCRIPTS))
+ || (hasErrors && (log->flags & LOG_FLAG_SHAREDSCRIPTS)) ) ) {
logHasErrors[i] |=
rotateSingleLog(log, i, state[i], rotNames[i]);
hasErrors |= logHasErrors[i];
}
}
- if (log->post) {
+ if (log->post
+ && (! ( (logHasErrors[j] && !(log->flags & LOG_FLAG_SHAREDSCRIPTS))
+ || (hasErrors && (log->flags & LOG_FLAG_SHAREDSCRIPTS)) ) )) {
if (!numRotated) {
message(MESS_DEBUG, "not running postrotate script, "
"since no logs were rotated\n");
} else {
message(MESS_DEBUG, "running postrotate script\n");
if (runScript(log->pattern, log->post)) {
- message(MESS_ERROR, "error running postrotate script "
- "for %s\n", log->pattern);
+ if (log->flags & LOG_FLAG_SHAREDSCRIPTS)
+ message(MESS_ERROR,
+ "error running shared postrotate script "
+ "for '%s'\n", log->pattern);
+ else {
+ message(MESS_ERROR,
+ "error running non-shared postrotate script "
+ "for %s of '%s'\n", log->files[j], log->pattern);
+ }
+ logHasErrors[j] = 1;
hasErrors = 1;
}
}
@@ -1109,7 +1131,8 @@
for (i = j;
((log->flags & LOG_FLAG_SHAREDSCRIPTS) && i < log->numFiles)
|| (!(log->flags & LOG_FLAG_SHAREDSCRIPTS) && i == j); i++) {
- if (!logHasErrors[i]) {
+ if (! ( (logHasErrors[i] && !(log->flags & LOG_FLAG_SHAREDSCRIPTS))
+ || (hasErrors && (log->flags & LOG_FLAG_SHAREDSCRIPTS)) ) ) {
logHasErrors[i] |=
postrotateSingleLog(log, i, state[i], rotNames[i]);
hasErrors |= logHasErrors[i];
--- logrotate-3.7.5/logrotate.8.errorHandling 2006-05-17 16:46:51.000000000 +0200
+++ logrotate-3.7.5/logrotate.8 2007-03-31 12:37:06.000000000 +0200
@@ -326,7 +326,8 @@
\fBnosharedscripts\fR
Run \fBprerotate\fR and \fBpostrotate\fR scripts for every log file which
is rotated (this is the default, and overrides the \fBsharedscripts\fR
-option).
+option). If the scripts exit with error, the remaining actions will
+not be executed for the affected log only.
.TP
\fBnotifempty\fR
@@ -346,7 +347,8 @@
The lines between \fBpostrotate\fR and \fBendscript\fR (both of which
must appear on lines by themselves) are executed after the log file is
rotated. These directives may only appear inside of a log file definition.
-See \fBprerotate\fR as well.
+See \fBprerotate\fR as well. See \fBsharedscripts\fR and
+\fBnosharedscripts\fR for error handling.
.TP
\fBprerotate\fR/\fBendscript\fR
@@ -354,7 +356,8 @@
must appear on lines by themselves) are executed before the log file is
rotated and only if the log will actually be rotated. These directives
may only appear inside of a log file definition. See \fBpostrotate\fR
-as well.
+as well. See \fBsharedscripts\fR and \fBnosharedscripts\fR for error
+handling.
.TP
\fBfirstaction\fR/\fBendscript\fR
@@ -362,7 +365,8 @@
must appear on lines by themselves) are executed once before all log
files that match the wildcarded pattern are rotated, before prerotate script
is run and only if at least one log will actually be rotated. These directives
-may only appear inside of a log file definition. See \fBlastaction\fR as well.
+may only appear inside of a log file definition. If the script exits
+with error, no further processing is done. See \fBlastaction\fR as well.
.TP
\fBlastaction\fR/\fBendscript\fR
@@ -370,7 +374,9 @@
must appear on lines by themselves) are executed once after all log
files that match the wildcarded pattern are rotated, after postrotate script
is run and only if at least one log is rotated. These directives may only
-appear inside of a log file definition. See \fBfirstaction\fR as well.
+appear inside of a log file definition. If the script exits with
+error, just an error message is shown (as this is the last
+action). See \fBfirstaction\fR as well.
.TP
\fBrotate \fIcount\fR
@@ -393,8 +399,10 @@
/var/log/news/* example). If \fBsharedscript\fR is specified, the scripts
are only run once, no matter how many logs match the wildcarded pattern.
However, if none of the logs in the pattern require rotating, the scripts
-will not be run at all. This option overrides the \fBnosharedscripts\fR
-option and implies \fBcreate\fR option.
+will not be run at all. If the scripts exit with error, the remaining
+actions will not be executed for any logs. This option overrides the
+\fBnosharedscripts\fR option and implies \fBcreate\fR option.
+
.TP
\fBstart \fIcount\fR

View File

@ -0,0 +1,11 @@
--- logrotate-3.7.5/logrotate.c.logfn 2007-05-30 14:52:21.000000000 +0200
+++ logrotate-3.7.5/logrotate.c 2007-05-30 14:53:08.000000000 +0200
@@ -151,7 +151,7 @@
}
if (!fork()) {
- execl("/bin/sh", "sh", "-c", script, NULL);
+ execl("/bin/sh", "sh", "-c", script, script, logfn, NULL);
exit(1);
}

201
logrotate-3.7.5-shred.patch Normal file
View File

@ -0,0 +1,201 @@
--- logrotate-3.7.5/logrotate.h.shred 2007-05-14 09:25:50.000000000 +0200
+++ logrotate-3.7.5/logrotate.h 2007-05-14 10:27:48.000000000 +0200
@@ -16,6 +16,7 @@
#define LOG_FLAG_SHAREDSCRIPTS (1 << 7)
#define LOG_FLAG_COPY (1 << 8)
#define LOG_FLAG_DATEEXT (1 << 9)
+#define LOG_FLAG_SHRED (1 << 10)
#define NO_MODE ((mode_t) -1)
#define NO_UID ((uid_t) -1)
@@ -44,6 +45,7 @@
char *uncompress_prog;
char *compress_ext;
int flags;
+ int shred_cycles; /* if !=0, pass -n shred_cycles to GNU shred */
mode_t createMode; /* if any/all of these are -1, we use the */
uid_t createUid; /* attributes from the log file just rotated */
gid_t createGid;
--- logrotate-3.7.5/logrotate.c.shred 2007-05-14 09:25:30.000000000 +0200
+++ logrotate-3.7.5/logrotate.c 2007-05-14 10:35:41.000000000 +0200
@@ -53,6 +53,8 @@
char *mailCommand = DEFAULT_MAIL_COMMAND;
time_t nowSecs = 0;
+static int shred_file(char * filename, logInfo *log);
+
static int globerr(const char *pathname, int theerr)
{
message(MESS_ERROR, "error accessing %s: %s\n", pathname,
@@ -188,11 +190,54 @@
return fd;
}
-static int removeLogFile(char *name)
+#define SHRED_CALL "shred -u "
+#define SHRED_COUNT_FLAG "-n "
+#define DIGITS 10
+/* unlink, but try to call shred from GNU fileutils */
+static int shred_file(char * filename, logInfo *log)
+{
+ int len, ret;
+ char *cmd;
+ char count[DIGITS]; /* that's a lot of shredding :) */
+
+ if (!(log->flags & LOG_FLAG_SHRED)) {
+ return unlink(filename);
+ }
+
+ len = strlen(filename) + strlen(SHRED_CALL);
+ len += strlen(SHRED_COUNT_FLAG) + DIGITS;
+ cmd = malloc(len);
+
+ if (!cmd) {
+ message(MESS_ERROR, "malloc error while shredding");
+ return unlink(filename);
+ }
+ strcpy(cmd, SHRED_CALL);
+ if (log->shred_cycles != 0) {
+ strcat(cmd, SHRED_COUNT_FLAG);
+ snprintf(count, DIGITS - 1, "%d", log->shred_cycles);
+ strcat(count, " ");
+ strcat(cmd, count);
+ }
+ strcat(cmd, filename);
+ ret = system(cmd);
+ free(cmd);
+ if (ret != 0) {
+ message(MESS_ERROR, "Failed to shred %s\n, trying unlink", filename);
+ if (ret != -1) {
+ message(MESS_NORMAL, "Shred returned %d\n", ret);
+ }
+ return unlink(filename);
+ } else {
+ return ret;
+ }
+}
+
+static int removeLogFile(char *name, logInfo *log)
{
message(MESS_DEBUG, "removing old log %s\n", name);
- if (!debug && unlink(name)) {
+ if (!debug && shred_file(name, log)) {
message(MESS_ERROR, "Failed to remove old log %s: %s\n",
name, strerror(errno));
return 1;
@@ -255,7 +300,7 @@
return 1;
}
- unlink(name);
+ shred_file(name, log);
return 0;
}
@@ -697,7 +742,7 @@
mailCommand, logNum,
log);
if (!hasErrors)
- hasErrors = removeLogFile(mailFilename);
+ hasErrors = removeLogFile(mailFilename, log);
}
mail_out = i;
}
@@ -737,7 +782,7 @@
mailLogWrapper(mailFilename, mailCommand,
logNum, log);
if (!hasErrors)
- hasErrors = removeLogFile(mailFilename);
+ hasErrors = removeLogFile(mailFilename, log);
}
}
}
@@ -954,7 +999,7 @@
}
if (!hasErrors && rotNames->disposeName)
- hasErrors = removeLogFile(rotNames->disposeName);
+ hasErrors = removeLogFile(rotNames->disposeName, log);
#ifdef WITH_SELINUX
if (selinux_enabled) {
--- logrotate-3.7.5/logrotate.8.shred 2007-05-14 09:26:02.000000000 +0200
+++ logrotate-3.7.5/logrotate.8 2007-05-14 10:42:16.000000000 +0200
@@ -330,6 +330,10 @@
not be executed for the affected log only.
.TP
+\fBnoshred\fR
+Do not use \fBshred\fR when deleting old log files. See also \fBshred\fR.
+
+.TP
\fBnotifempty\fR
Do not rotate the log if it is empty (this overrides the \fBifempty\fR option).
@@ -403,6 +407,16 @@
actions will not be executed for any logs. This option overrides the
\fBnosharedscripts\fR option and implies \fBcreate\fR option.
+.TP
+\fBshred\fR
+Delete log files using \fBshred\fR -u instead of unlink(). This should
+ensure that logs are not readable after their scheduled deletion; this is
+off by default. See also \fBnoshred\fR.
+
+.TP
+\fBshredcycles\fR \fIcount\fR
+Asks GNU \fBshred\fR to overwite log files \fBcount\fR times before
+deletion. Without this option, \fBshred\fR's default will be used.
.TP
\fBstart \fIcount\fR
--- logrotate-3.7.5/config.c.shred 2007-05-14 09:26:42.000000000 +0200
+++ logrotate-3.7.5/config.c 2007-05-14 10:32:37.000000000 +0200
@@ -432,6 +432,7 @@
/* uncompress_prog */ NULL,
/* compress_ext */ NULL,
/* flags */ LOG_FLAG_IFEMPTY,
+ /* shred_cycles */ 0,
/* createMode/Uid/Gid */ NO_MODE, NO_UID, NO_GID,
/* compress_options_list/count */ NULL, 0
};
@@ -638,6 +639,14 @@
newlog->flags &= ~LOG_FLAG_DELAYCOMPRESS;
*endtag = oldchar, start = endtag;
+ } else if (!strcmp(start, "shred")) {
+ newlog->flags |= LOG_FLAG_SHRED;
+
+ *endtag = oldchar, start = endtag;
+ } else if (!strcmp(start, "noshred")) {
+ newlog->flags &= ~LOG_FLAG_SHRED;
+
+ *endtag = oldchar, start = endtag;
} else if (!strcmp(start, "sharedscripts")) {
newlog->flags |= LOG_FLAG_SHAREDSCRIPTS;
@@ -833,7 +842,22 @@
*endtag = oldchar, start = endtag;
}
#endif
- } else if (!strcmp(start, "daily")) {
+ } else if (!strcmp(start, "shredcycles")) {
+ *endtag = oldchar, start = endtag;
+
+ if (!isolateValue(configFile, lineNum, "shred cycles",
+ &start, &endtag)) {
+ oldchar = *endtag, *endtag = '\0';
+
+ newlog->shred_cycles = strtoul(start, &chptr, 0);
+ if (*chptr || newlog->shred_cycles < 0) {
+ message(MESS_ERROR, "%s:%d bad shred cycles '%s'\n",
+ configFile, lineNum, start);
+ return 1;
+ }
+ *endtag = oldchar, start = endtag;
+ }
+ } else if (!strcmp(start, "daily")) {
*endtag = oldchar, start = endtag;
newlog->criterium = ROT_DAYS;

3
logrotate-3.7.5.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8f3df579874bdb2b44bfb72b5b2b2ce257f24de6ffda302693d13e24f0224d3e
size 35302

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Thu Aug 16 15:33:29 CEST 2007 - ro@suse.de
- update to 3.7.5 with some bugfixes containing:
- 251040 config option size not handled correctly
- added the current fedora patchkit which adds shred support
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Aug 7 18:07:58 CEST 2006 - ro@suse.de Mon Aug 7 18:07:58 CEST 2006 - ro@suse.de

View File

@ -1,7 +1,7 @@
# #
# spec file for package logrotate (Version 3.7.4) # spec file for package logrotate (Version 3.7.5)
# #
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine # This file and all modifications and additions to the pristine
# package are under the same license as the package itself. # package are under the same license as the package itself.
# #
@ -13,25 +13,30 @@
Name: logrotate Name: logrotate
BuildRequires: popt-devel BuildRequires: popt-devel
Summary: Rotate, Compress, Remove, and Mail System Log Files Summary: Rotate, Compress, Remove, and Mail System Log Files
Version: 3.7.4 Version: 3.7.5
Release: 2 Release: 1
License: GPL License: GPL v2 or later
Group: System/Base Group: System/Base
Source: ftp://people.redhat.com/sopwith/logrotate-%{version}.tar.bz2 Source: ftp://people.redhat.com/sopwith/logrotate-%{version}.tar.bz2
Patch: logrotate-suse.dif Patch: logrotate-suse.dif
Patch1: logrotate-conf.dif Patch1: logrotate-conf.dif
Patch2: logrotate-autoext.dif Patch2: logrotate-autoext.dif
Patch3: logrotate-addextension.dif Patch3: logrotate-addextension.dif
Patch11: logrotate-3.7.5-errorHandling.patch
Patch12: logrotate-3.7.5-shred.patch
Patch13: logrotate-3.7.5-cfengine.patch
Patch14: logrotate-3.7.5-date.patch
Patch15: logrotate-3.7.5-logfn.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
PreReq: %fillup_prereq /bin/rm /bin/mv PreReq: %fillup_prereq /bin/rm /bin/mv
%description %description
The logrotate utility is designed to simplify the administration of log The logrotate utility is designed to simplify the administration of log
files on a system that generates a lot of log files. Logrotate allows files on a system that generates a lot of log files. Logrotate allows
for the automatic rotation, compression, removal, and mailing of log the automatic rotation, compression, removal, and mailing of log files.
files. Logrotate can be set to handle a log file daily, weekly, Logrotate can be set to handle a log file daily, weekly, monthly, or
monthly, or when the log file gets to a certain size. Normally, when the log file reaches a certain size. Normally, logrotate runs as a
logrotate runs as a daily cron job. daily cron job.
@ -47,6 +52,11 @@ Authors:
%patch1 %patch1
%patch2 %patch2
%patch3 %patch3
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%build %build
make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
@ -79,7 +89,11 @@ rm -rf $RPM_BUILD_ROOT
%config /etc/logrotate.conf %config /etc/logrotate.conf
%config(noreplace)/etc/logrotate.d/wtmp %config(noreplace)/etc/logrotate.d/wtmp
%changelog -n logrotate %changelog
* Thu Aug 16 2007 - ro@suse.de
- update to 3.7.5 with some bugfixes containing:
- 251040 config option size not handled correctly
- added the current fedora patchkit which adds shred support
* Mon Aug 07 2006 - ro@suse.de * Mon Aug 07 2006 - ro@suse.de
- try adding new option "addextension" which provides what - try adding new option "addextension" which provides what
some users expected the old "extension" keyword to do some users expected the old "extension" keyword to do