Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clamd can't start if clamd.conf contains inline comments #1175

Open
jmlrt opened this issue Feb 15, 2024 · 2 comments
Open

Clamd can't start if clamd.conf contains inline comments #1175

jmlrt opened this issue Feb 15, 2024 · 2 comments

Comments

@jmlrt
Copy link

jmlrt commented Feb 15, 2024

Describe the bug

Clamd start is failing when some comment are added on the same line as a config value in the clamd.conf file.

How to reproduce the problem

Edit clamd.conf and add MaxRecursion 20 # set to 20 for example.

$ grep MaxRecursion /etc/clamav/clamd.conf
MaxRecursion 20 # set to 20
$ clamd
ERROR: Incorrect argument format for option MaxRecursion
ERROR: Can't open/parse the config file /etc/clamav/clamd.conf

Move the inline comment to its own line and it's starting again:

$ grep -B1 MaxRecursion /etc/clamav/clamd.conf
# set to 20
MaxRecursion 20
$ clamd
$ echo $?
0
$ ps -ef | grep clamd | grep -v grep
  121 clamav    0:16 {clamd} /run/rosetta/rosetta /usr/sbin/clamd clamd

Attachments

If applicable, add screenshots to help explain your problem.

If the issue is reproducible only when scanning a specific file, attach it to the ticket.

@micahsnyder
Copy link
Contributor

I agree, it would be nice if clamav's config files would support inline comments.

@userwiths
Copy link
Contributor

Here is an attempt at a solution. I've tested it locally by manually editing the clamd.conf file and I'm open to suggestions in case you see anything that should be improved/changed. Hope it helps.

Cause of issue:

The first issue I see is that inline comments are not accepted due to failed Regex checks. This would be the case for MATCH_NUMBER, MATCH_SIZE and MATCH_BOOL because of the end line assertion $ not allowing for anything (comment in this case) between the value and the end of the line. Because of it, lines with an inline comment fail the check that is done here.

In case we fix the Regex expression, we would need to account for the inline comments in the following switch/case branches (I've accounted for them right before the switch so we don't have code repetition). The approach I took was to check if the value of the argument contains the # character and in case it does, use strtok to get the content on its left side.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants