HomeFreeBSD

When parsing a rule to rotate log files on a specific week day,

Description

When parsing a rule to rotate log files on a specific week day,
parseDWM() can advance the time to the next week. If the next week is
in the next month, then tm_mon is incremented. However, the increment
was failing to handle the wraparound from December to January, so when
parsing a rule during the last week of the December, the month would
advance to month 12. This triggered an out-of-bounds read of the
mtab[] array in days_pmonth() after parseDWM() returned. To fix,
this change resets the month to January and increment the year when
the month increment wraps.

The default rule for /var/log/weekly.log triggers this during the
last week of December each year.
Reported by: CHERI
Obtained from: CheriBSD
Reviewed by: jhb
Sponsored by: The University of Cambridge, Google Inc.
Differential Revision: https://reviews.freebsd.org/D33687

Details

Provenance
gadAuthored on Dec 30 2021, 8:45 PM
Differential Revision
D33687: newsyslog: Wrap months when parsing 'W' rules, diff #2
Parents
rG5e6a2d6eb220: Reapply: move libc++ from /usr/lib to /lib
Branches
Unknown
Tags
Unknown