aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2018-07-30 15:46:24 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2018-07-30 15:46:24 +0000
commit19fe43f796f3d962b3bf023a4484a82d7b2a5711 (patch)
treeaca2194592067375791863a569b2a2eb80bf1a92
parentbdafaf0aee7c1644fa8a6a39e4045dd0becdf5fd (diff)
downloadsrc-19fe43f796f3d962b3bf023a4484a82d7b2a5711.tar.gz
src-19fe43f796f3d962b3bf023a4484a82d7b2a5711.zip
newsyslog: fix compression arglist construction
Reuse of the index variable in two nested loops resulted in only the first argument in the list being used (fine for gzip, not fine for zstd). Also add tests for xz and zstd, and fix the COMPRESS_SUFFIX_MAXLEN macro. Submitted by: dnelson_1901_yahoo.com Differential Revision: https://reviews.freebsd.org/D16509
Notes
Notes: svn path=/head/; revision=336913
-rw-r--r--usr.sbin/newsyslog/newsyslog.c10
-rw-r--r--usr.sbin/newsyslog/tests/legacy_test.sh24
2 files changed, 29 insertions, 5 deletions
diff --git a/usr.sbin/newsyslog/newsyslog.c b/usr.sbin/newsyslog/newsyslog.c
index c45c89f0f727..e454d6e398ed 100644
--- a/usr.sbin/newsyslog/newsyslog.c
+++ b/usr.sbin/newsyslog/newsyslog.c
@@ -105,7 +105,7 @@ __FBSDID("$FreeBSD$");
#define COMPRESS_SUFFIX_ZST ".zst"
#endif
-#define COMPRESS_SUFFIX_MAXLEN MAX(MAX(sizeof(COMPRESS_SUFFIX_GZ),sizeof(COMPRESS_SUFFIX_BZ2)),sizeof(COMPRESS_SUFFIX_XZ))
+#define COMPRESS_SUFFIX_MAXLEN MAX(MAX(MAX(sizeof(COMPRESS_SUFFIX_GZ),sizeof(COMPRESS_SUFFIX_BZ2)),sizeof(COMPRESS_SUFFIX_XZ)),sizeof(COMPRESS_SUFFIX_ZST))
/*
* Compression types
@@ -2027,7 +2027,7 @@ do_zipwork(struct zipwork_entry *zwork)
char zresult[MAXPATHLEN];
char command[BUFSIZ];
char **args;
- int c;
+ int c, i;
assert(zwork != NULL);
pgm_path = NULL;
@@ -2043,10 +2043,10 @@ do_zipwork(struct zipwork_entry *zwork)
(void) strlcat(zresult,
compress_type[c].suffix, sizeof(zresult));
/* the first argument is always NULL, skip it */
- for (c = 1; c < ARGS_NUM; c++) {
- if (compress_type[c].args[c] == NULL)
+ for (i = 1; i < ARGS_NUM; i++) {
+ if (compress_type[c].args[i] == NULL)
break;
- args[c] = compress_type[c].args[c];
+ args[i] = compress_type[c].args[i];
}
break;
}
diff --git a/usr.sbin/newsyslog/tests/legacy_test.sh b/usr.sbin/newsyslog/tests/legacy_test.sh
index 24791ecda256..97f3821c3e22 100644
--- a/usr.sbin/newsyslog/tests/legacy_test.sh
+++ b/usr.sbin/newsyslog/tests/legacy_test.sh
@@ -498,6 +498,12 @@ tests_normal_rotate ".gz"
echo "$LOGFPATH 640 3 * @T00 NCJ" > newsyslog.conf
tests_normal_rotate ".bz2"
+echo "$LOGFPATH 640 3 * @T00 NCX" > newsyslog.conf
+tests_normal_rotate ".xz"
+
+echo "$LOGFPATH 640 3 * @T00 NCY" > newsyslog.conf
+tests_normal_rotate ".zst"
+
# Normal, archive dir
echo "$LOGFPATH 640 3 * @T00 NC" > newsyslog.conf
tests_normal_rotate "" "${TMPDIR}/alog/"
@@ -508,6 +514,12 @@ tests_normal_rotate ".gz" "${TMPDIR}/alog/"
echo "$LOGFPATH 640 3 * @T00 NCJ" > newsyslog.conf
tests_normal_rotate ".bz2" "${TMPDIR}/alog/"
+echo "$LOGFPATH 640 3 * @T00 NCX" > newsyslog.conf
+tests_normal_rotate ".xz" "${TMPDIR}/alog/"
+
+echo "$LOGFPATH 640 3 * @T00 NCY" > newsyslog.conf
+tests_normal_rotate ".zst" "${TMPDIR}/alog/"
+
# Time based, no archive dir
echo "$LOGFPATH 640 3 * @T00 NC" > newsyslog.conf
tests_time_rotate
@@ -518,6 +530,12 @@ tests_time_rotate "gz" ""
echo "$LOGFPATH 640 3 * @T00 NCJ" > newsyslog.conf
tests_time_rotate "bz2" ""
+echo "$LOGFPATH 640 3 * @T00 NCX" > newsyslog.conf
+tests_time_rotate "xz" ""
+
+echo "$LOGFPATH 640 3 * @T00 NCY" > newsyslog.conf
+tests_time_rotate "zst" ""
+
# Time based, archive dir
echo "$LOGFPATH 640 3 * @T00 NC" > newsyslog.conf
tests_time_rotate "" "${TMPDIR}/alog/"
@@ -528,6 +546,12 @@ tests_time_rotate "gz" "${TMPDIR}/alog/"
echo "$LOGFPATH 640 3 * @T00 NCJ" > newsyslog.conf
tests_time_rotate "bz2" "${TMPDIR}/alog/"
+echo "$LOGFPATH 640 3 * @T00 NCX" > newsyslog.conf
+tests_time_rotate "xz" "${TMPDIR}/alog/"
+
+echo "$LOGFPATH 640 3 * @T00 NCY" > newsyslog.conf
+tests_time_rotate "zst" "${TMPDIR}/alog/"
+
# RFC-5424; Normal, no archive dir
echo "$LOGFPATH5424 640 3 * @T00 NCT" > newsyslog.conf
echo "$LOGFPATH 640 3 * @T00 NC" >> newsyslog.conf