Werk #15417: mk_logwatch: Correctly handle UNIX paths with non-UTF-8 characters
Component | Checks & agents |
Title | mk_logwatch: Correctly handle UNIX paths with non-UTF-8 characters |
Date | Mar 3, 2023 |
Checkmk Edition | Checkmk Raw (CRE) |
Checkmk Version | 2.3.0b1 2.2.0b1 |
Level | Trivial Change |
Class | Bug Fix |
Compatibility | Incompatible - Manual interaction might be required |
On UNIX, filenames may consist of arbitrary bytes.
To display filenames in Checkmk, the mk_logwatch plugin assumes a UTF-8 encoding and previously replaced each non-UTF-8 (hence non-printable) byte with the replacement character �.
This lead to the problem that multiple filenames were represented by the same name in Checkmk.
As a result, the logfiles got displayed in one service, with the logfile contents merged to one log view.
In order to handle this situation, mk_logwatch now uses a backslash escape sequence instead of the replacement character.
Non-UTF-8 bytes are now represented by their hexadecimal value with a \x prefix.
E.g., monitoring the two files (as shown with ls, i.e., with octal escape sequence) 'my'$'\300\201''file' and 'my'$'\300\200''file now yields two services Log my\xc0\x80file and Log my\xc0\x81file, while it used to yield only one service Log my��file before.
Due to the new service name, you have to discover the newly named services if you are affected by this change.