svlogd: strip leading '!' from processor lines
authorFrancis Rounds <Francis.Rounds@4bridgeworks.com>
Wed, 14 Sep 2016 11:53:51 +0000 (11:53 +0000)
committerDenys Vlasenko <vda.linux@googlemail.com>
Thu, 15 Sep 2016 12:05:04 +0000 (14:05 +0200)
commitd2c5de0130d46e3314908cddb5f831a84a9f9e27
treed82b95851a7ae360f4a9f0cd76b69dfd15a969ac
parentde1996dac516a49cd4c86270b918721f6e9f3f5d
svlogd: strip leading '!' from processor lines

When using svlogd's processor functionality to run arbitrary commands
on log rotation, the line in the config is executed verbatim, i.e. the
exclamation mark is included.

For example, if the config file contains:

    s100
    !cat

then when it's time to rotate the log files after each 100 bytes, sh -c
"!cat" will be run, instead of sh -c "cat" as intended. The result is
svlogd logging

    /bin/bash: !cat: command not found
    svlogd: warning: processor failed, restart: /tmp/svlogd/

over and over again as it keeps attempting to execute the processor and
failing (unless you happen to have a "!cat" binary around :)).

Skipping the exclamation mark when performing the wstrdup() fixes the
issue.

Signed-off-by: Francis Rounds <francis.rounds@4bridgeworks.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
runit/svlogd.c