syslog(3) as user sets errno

Stefan Ehmann shoesoft at gmx.net
Sat Apr 28 12:43:17 UTC 2007


If a non-privilged program calls syslog(3), after the call, errno is set to 13 
(permission denied).

In lib/libc/gen/syslog.c connectlog(), it is first tried to connect 
to /var/run/logpriv. If it fails /var/run/log is tried.

The first connect fails if syslog() is not called as root, it fails with 
errno=13 and the second connect succeeds.

This is all fine, except that errno is set to 13 after calling syslog().

Is this a bug or expected behaviour?

IMHO errno should be set to 0 before the second connect is called -- or is 
this a bad idea?

Stefan


More information about the freebsd-questions mailing list