Re: Re: [PATCH] 98syslog: try to dynamically check for rsyslog moddir

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Friday 10 of September 2010 15:48:22 Harald Hoyer wrote:
> On 09/08/2010 06:48 PM, Tomasz Paweł Gajc wrote:
> > Dnia 2010-09-08, o godz. 18:52:13
> >
> > Andrey Borzenkov<arvidjaar@xxxxxxx>  napisał(a):
> >> Thomas pointed out that default module path may not be correct
> >> (Mandriva installs modules under architecture dependent path).
> >> Unfortunately rsyslog does not seem to offer any way to query
> >> for
> >> default configuration values. Here is rather hack - try to load
> >> non-existing module and fetch path from error message.
> >>
> >> Example of error message from version 4.6.4:
> >>
> >> rsyslogd: could not load module
> >> '/lib64/rsyslog/_No_sUcH_MOduLe.so', dlopen:
> >> /lib64/rsyslog/_No_sUcH_MOduLe.so: cannot open shared object
> >> file: No such file or directory
> >>
> >> Signed-off-by: Andrey Borzenkov<arvidjaar@xxxxxxx>
> >>
> >> ---
> >>
> >>   modules.d/98syslog/install |   17 ++++++++++++++++-
> >>   1 files changed, 16 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/modules.d/98syslog/install
> >> b/modules.d/98syslog/install index 1fd1b6f..e3d02bf 100755
> >> --- a/modules.d/98syslog/install
> >> +++ b/modules.d/98syslog/install
> >> @@ -1,6 +1,21 @@
> >>
> >>   #!/bin/sh
> >>   if type -P rsyslogd>/dev/null; then
> >>
> >> -
> >> installs="rsyslogd /lib/rsyslog/lmnet.so /lib/rsyslog/imklog.so
> >> /lib/rsyslog/imuxsock.so" +	# module path can be changed during
> >> build and currently rsyslog
> >> +	# does not provide any means to query for it. Use hack - try
> >> to
> >> +	# load non-existent module and look at error message
> >> +	R_CONF=/tmp/dracut.rsyslog.conf.$$
> >> +	R_ERR=/tmp/dracut.rsyslog.err.$$
> >> +	R_MODDIR> >> +	echo '$ModLoad _No_sUcH_MOduLe'>  $R_CONF
> >> +	if [ -s $R_CONF ]; then
> >> +		rsyslogd -N 1 -f $R_CONF 2>  $R_ERR>  /dev/null
> >> +		R_MODDIR=$(grep ' could not load
> >> module .*_No_sUcH_MOduLe' $R_ERR)
> >> +		R_MODDIR=${R_MODDIR#*could not load module \'}
> >> +		R_MODDIR=${R_MODDIR%\', *}
> >> +		R_MODDIR=${R_MODDIR%/*}
> >> +	fi
> >> +	[ -n "$R_MODDIR" ] || R_MODDIR=/lib/rsyslog
> >> +	installs="rsyslogd $R_MODDIR/lmnet.so $R_MODDIR/imklog.so
> >> $R_MODDIR/imuxsock.so" elif type -P syslogd>/dev/null; then
> >>
> >>       installs="syslogd"
> >>
> >>   elif type -P syslog-ng>/dev/null; then
> >
> > Indeed this patch is more precise than my simplified one ;)
>
> ugly hack :-/ plus you want mktemp to prevent attacks..

Just to make sure - it was NAK? :)

Attachment: signature.asc
Description: This is a digitally signed message part.


[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux