From 7f0f85e746bb1bdfe15cb70d52b0d0204e22f633 Mon Sep 17 00:00:00 2001 From: Peter Vrabec Date: Wed, 22 Aug 2007 15:36:20 +0000 Subject: [PATCH] - new upstream release --- .cvsignore | 2 +- rsyslog-1.19.0-libPath.patch | 30 +++++++++ rsyslog-1.19.0-modUnload.patch | 101 +++++++++++++++++++++++++++++++ rsyslog-1.19.0-ommysqlLeak.patch | 79 ++++++++++++++++++++++++ rsyslog-1.19.0-readfds.patch | 18 ++++++ rsyslog.spec | 40 +++++++++--- sources | 2 +- 7 files changed, 263 insertions(+), 9 deletions(-) create mode 100644 rsyslog-1.19.0-libPath.patch create mode 100644 rsyslog-1.19.0-modUnload.patch create mode 100644 rsyslog-1.19.0-ommysqlLeak.patch create mode 100644 rsyslog-1.19.0-readfds.patch diff --git a/.cvsignore b/.cvsignore index cf982fb..533223f 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,3 +1,3 @@ -rsyslog-1.18.1.tar.gz +rsyslog-1.19.0.tar.gz rsyslog.init rsyslog.sysconfig diff --git a/rsyslog-1.19.0-libPath.patch b/rsyslog-1.19.0-libPath.patch new file mode 100644 index 0000000..b90409d --- /dev/null +++ b/rsyslog-1.19.0-libPath.patch @@ -0,0 +1,30 @@ +--- rsyslog-1.19.0/Makefile.am.libPath 2007-08-09 04:05:28.000000000 +0200 ++++ rsyslog-1.19.0/Makefile.am 2007-08-21 12:20:46.000000000 +0200 +@@ -1,7 +1,7 @@ + + sbin_PROGRAMS=rklogd rfc3195d rsyslogd +-rsyslogmoddir=/lib/rsyslog/ +-rsyslogmod_LTLIBRARIES=ommysql.la ++ ++pkglib_LTLIBRARIES = ommysql.la + + rklogd_SOURCES=klogd.c syslog.c pidfile.c ksym.c ksym_mod.c klogd.h ksyms.h pidfile.h module.h + +@@ -10,13 +10,14 @@ + man_MANS = rfc3195d.8 rklogd.8 rsyslogd.8 rsyslog.conf.5 + + rsyslogd_SOURCES=syslogd.c pidfile.c template.c outchannel.c stringbuf.c srUtils.c parse.c syslogd-types.h template.h outchannel.h syslogd.h stringbuf.h parse.h srUtils.h liblogging-stub.h net.c net.h msg.c msg.h omshell.c omshell.h omusrmsg.c omusrmsg.h ommysql.h omfwd.c omfwd.h tcpsyslog.c tcpsyslog.h omfile.h omfile.c omdiscard.c omdiscard.h modules.c modules.h module-template.h objomsr.c objomsr.h cfsysline.c cfsysline.h linkedlist.c linkedlist.h iminternal.c iminternal.h action.c action.h +-rsyslogd_CPPFLAGS=-D_PATH_MODDIR=\"$(rsyslogmoddir)\" ++rsyslogd_CPPFLAGS=-D_PATH_MODDIR=\"$(pkglibdir)/\" + rsyslogd_LDADD=$(zlib_libs) $(pthreads_libs) -ldl + rsyslogd_LDFLAGS=-export-dynamic + + ommysql_la_SOURCES=ommysql.c ommysql.h + ommysql_la_CPPFLAGS=$(mysql_includes) +-ommysql_la_LDFLAGS=-module -export-dynamic ++ommysql_la_LDFLAGS=-module -avoid-version + ommysql_la_LIBADD=$(mysql_libs) + +-EXTRA_DIST = doc/bugs.html doc/features.html doc/generic_design.html doc/history.html doc/how2help.html doc/install.html doc/ipv6.html doc/manual.html doc/property_replacer.html doc/rsyslog_conf.html doc/rsyslog_mysql.html doc/rsyslog_packages.html doc/rsyslog_php_syslog_ng.html doc/rsyslog_recording_pri.html doc/rsyslog_stunnel.html doc/status.html doc/syslog-protocol.html doc/version_naming.html doc/contributors.html redhat/rsyslog.conf redhat/rsyslog.init redhat/rsyslog.log redhat/rsyslog.sysconfig freebsd/rsyslogd slackware/rc.rsyslogd rfc3195d.8 rklogd.8 rsyslogd.8 rsyslog.conf.5 createDB.sql contrib/README contrib/delete_mysql doc/rsconf1_actionexeconlyifpreviousissuspended.html doc/rsconf1_actionresumeinterval.html doc/rsconf1_allowedsender.html doc/rsconf1_controlcharacterescapeprefix.html doc/rsconf1_debugprintcfsyslinehandlerlist.html doc/rsconf1_debugprintmodulelist.html doc/rsconf1_debugprinttemplatelist.html doc/rsconf1_dircreatemode.html doc/rsconf1_dirgroup.html doc/rsconf1_dirowner.html doc/rsconf1_dropmsgswithmaliciousdnsptrrecords.html doc/rsconf1_droptrailinglfonreception.html doc/rsconf1_dynafilecachesize.html doc/rsconf1_escapecontrolcharactersonreceive.html doc/rsconf1_failonchownfailure.html doc/rsconf1_filecreatemode.html doc/rsconf1_filegroup.html doc/rsconf1_fileowner.html doc/rsconf1_includeconfig.html doc/rsconf1_mainmsgqueuesize.html doc/rsconf1_modload.html doc/rsconf1_repeatedmsgreduction.html doc/rsconf1_resetconfigvariables.html doc/rsconf1_umask.html ++EXTRA_DIST = doc/bugs.html doc/features.html doc/generic_design.html doc/history.html doc/how2help.html doc/install.html doc/ipv6.html doc/manual.html doc/property_replacer.html doc/rsyslog_conf.html doc/rsyslog_mysql.html doc/rsyslog_packages.html doc/rsyslog_php_syslog_ng.html doc/rsyslog_recording_pri.html doc/rsyslog_stunnel.html doc/status.html doc/syslog-protocol.html doc/version_naming.html doc/contributors.html redhat/rsyslog.conf redhat/rsyslog.init redhat/rsyslog.log redhat/rsyslog.sysconfig freebsd/rsyslogd slackware/rc.rsyslogd rfc3195d.8 rklogd.8 rsyslogd.8 rsyslog.conf.5 createDB.sql contrib/README contrib/delete_mysql doc/rsconf1_actionexeconlyifpreviousissuspended.html doc/rsconf1_actionresumeinterval.html doc/rsconf1_allowedsender.html doc/rsconf1_controlcharacterescapeprefix.html doc/rsconf1_debugprintcfsyslinehandlerlist.html doc/rsconf1_debugprintmodulelist.html doc/rsconf1_debugprinttemplatelist.html doc/rsconf1_dircreatemode.html doc/rsconf1_dirgroup.html doc/rsconf1_dirowner.html doc/rsconf1_dropmsgswithmaliciousdnsptrrecords.html doc/rsconf1_droptrailinglfonreception.html doc/rsconf1_dynafilecachesize.html doc/rsconf1_escapecontrolcharactersonreceive.html doc/rsconf1_failonchownfailure.html doc/rsconf1_filecreatemode.html doc/rsconf1_filegroup.html doc/rsconf1_fileowner.html doc/rsconf1_includeconfig.html doc/rsconf1_mainmsgqueuesize.html doc/rsconf1_modload.html doc/rsconf1_repeatedmsgreduction.html doc/rsconf1_resetconfigvariables.html doc/rsconf1_umask.html createDB.sql ++ diff --git a/rsyslog-1.19.0-modUnload.patch b/rsyslog-1.19.0-modUnload.patch new file mode 100644 index 0000000..aad62f5 --- /dev/null +++ b/rsyslog-1.19.0-modUnload.patch @@ -0,0 +1,101 @@ +--- rsyslog/cfsysline.c.orig 2007-08-16 23:33:00.000000000 +0200 ++++ rsyslog/cfsysline.c 2007-08-16 23:44:10.000000000 +0200 +@@ -573,6 +573,12 @@ finalize_it: + } + + ++rsRetVal unregCfSysLineHdlrs(void) ++{ ++ return llDestroy(&llCmdList); ++} ++ ++ + /* process a cfsysline command (based on handler structure) + * param "p" is a pointer to the command line after the command. Should be + * updated. +--- rsyslog/cfsysline.h.orig 2007-08-16 23:33:10.000000000 +0200 ++++ rsyslog/cfsysline.h 2007-08-16 23:44:23.000000000 +0200 +@@ -61,6 +61,7 @@ typedef struct cslCmd_s cslCmd_t; + + /* prototypes */ + rsRetVal regCfSysLineHdlr(uchar *pCmdName, int bChainingPermitted, ecslCmdHdrlType eType, rsRetVal (*pHdlr)(), void *pData); ++rsRetVal unregCfSysLineHdlrs(void); + rsRetVal processCfSysLineCommand(uchar *pCmd, uchar **p); + rsRetVal cfsyslineInit(void); + void dbgPrintCfSysLineHandlers(void); +--- rsyslog/syslogd.c.orig 2007-08-16 23:45:27.000000000 +0200 ++++ rsyslog/syslogd.c 2007-08-17 11:23:54.000000000 +0200 +@@ -3552,7 +3552,7 @@ static void die(int sig) + /* de-init some modules */ + modExitIminternal(); + +- /*TODO: the module config command handlers must also be freed! */ ++ unregCfSysLineHdlrs(); + + /* TODO: this would also be the right place to de-init the builtin output modules. We + * do not currently do that, because the module interface does not allow for +@@ -4259,6 +4259,10 @@ static void init(void) + /* Close all open log files and free log descriptor array. */ + freeSelectors(); + ++ /* Unload all non-static modules */ ++ dbgprintf("Unloading non-static modules.\n"); ++ modUnloadAndDestructDynamic(); ++ + dbgprintf("Clearing templates.\n"); + tplDeleteNew(); + +--- rsyslog/ommysql.c.orig 2007-08-17 11:02:00.000000000 +0200 ++++ rsyslog/ommysql.c 2007-08-17 11:02:02.000000000 +0200 +@@ -79,6 +79,7 @@ static void closeMySQL(instanceData *pDa + assert(pData != NULL); + + if(pData->f_hmysql != NULL) { /* just to be on the safe side... */ ++ mysql_server_end(); + mysql_close(pData->f_hmysql); + pData->f_hmysql = NULL; + } +--- rsyslog/modules.c.orig 2007-08-21 09:43:48.000000000 +0200 ++++ rsyslog/modules.c 2007-08-21 09:07:17.000000000 +0200 +@@ -336,6 +336,31 @@ rsRetVal modUnloadAndDestructAll(void) + + return iRet; + } ++ ++ ++rsRetVal modUnloadAndDestructDynamic(void) ++{ ++ DEFiRet; ++ modInfo_t *pMod; ++ modInfo_t *pModPrev; ++ ++ pLoadedModulesLast = NULL; ++ ++ pMod = modGetNxt(NULL); ++ while(pMod != NULL) { ++ pModPrev = pMod; ++ pMod = modGetNxt(pModPrev); /* get next */ ++ /* now we can destroy the previous module */ ++ if(pModPrev->eLinkType != eMOD_LINK_STATIC) { ++ dbgprintf("Unloading module %s\n", modGetName(pModPrev)); ++ moduleDestruct(pModPrev); ++ } else { ++ pLoadedModulesLast = pModPrev; ++ } ++ } ++ ++ return iRet; ++} + /* + * vi:set ai: + */ +--- rsyslog/modules.h.orig 2007-08-17 11:11:26.000000000 +0200 ++++ rsyslog/modules.h 2007-08-17 11:15:35.000000000 +0200 +@@ -94,6 +94,7 @@ uchar *modGetName(modInfo_t *pThis); + uchar *modGetStateName(modInfo_t *pThis); + void modPrintList(void); + rsRetVal modUnloadAndDestructAll(void); ++rsRetVal modUnloadAndDestructDynamic(void); + + #endif /* #ifndef MODULES_H_INCLUDED */ + /* diff --git a/rsyslog-1.19.0-ommysqlLeak.patch b/rsyslog-1.19.0-ommysqlLeak.patch new file mode 100644 index 0000000..09a32d8 --- /dev/null +++ b/rsyslog-1.19.0-ommysqlLeak.patch @@ -0,0 +1,79 @@ +--- rsyslog/ommysql.c.orig 2007-08-16 17:06:10.000000000 +0200 ++++ rsyslog/ommysql.c 2007-08-16 17:07:02.000000000 +0200 +@@ -229,7 +229,7 @@ CODE_STD_STRING_REQUESTparseSelectorAct( + + /* ok, if we reach this point, we have something for us */ + if((iRet = createInstance(&pData)) != RS_RET_OK) +- return iRet; ++ goto finalize_it; + + p++; /* eat '>' '*/ + +--- rsyslog/omusrmsg.c.orig 2007-08-16 17:07:20.000000000 +0200 ++++ rsyslog/omusrmsg.c 2007-08-16 17:11:52.000000000 +0200 +@@ -272,10 +272,10 @@ CODE_STD_STRING_REQUESTparseSelectorAct( + */ + if (!*p || !((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z') + || (*p >= '0' && *p <= '9') || *p == '_' || *p == '.' || *p == '*')) +- return RS_RET_CONFLINE_UNPROCESSED; ++ ABORT_FINALIZE(RS_RET_CONFLINE_UNPROCESSED); + + if((iRet = createInstance(&pData)) != RS_RET_OK) +- return iRet; ++ goto finalize_it; + + + if(*p == '*') { /* wall */ +@@ -284,7 +284,7 @@ CODE_STD_STRING_REQUESTparseSelectorAct( + pData->bIsWall = 1; /* write to all users */ + if((iRet = cflineParseTemplateName(&p, *ppOMSR, 0, OMSR_NO_RQD_TPL_OPTS, (uchar*) " WallFmt")) + != RS_RET_OK) +- return iRet; ++ goto finalize_it; + } else { + /* everything else beginning with the regex above + * is currently treated as a user name +@@ -309,7 +309,7 @@ CODE_STD_STRING_REQUESTparseSelectorAct( + */ + if((iRet = cflineParseTemplateName(&p, *ppOMSR, 0, OMSR_NO_RQD_TPL_OPTS, (uchar*)" StdUsrMsgFmt")) + != RS_RET_OK) +- return iRet; ++ goto finalize_it; + } + CODE_STD_FINALIZERparseSelectorAct + ENDparseSelectorAct +--- rsyslog/rsyslog.h.orig 2007-08-16 17:13:38.000000000 +0200 ++++ rsyslog/rsyslog.h 2007-08-16 17:15:47.000000000 +0200 +@@ -82,9 +82,11 @@ typedef enum rsRetVal_ rsRetVal; /**< fr + /* macro below is to be used if we need our own handling, eg for cleanup */ + #define CHKiRet_Hdlr(code) if((iRet = code) != RS_RET_OK) + #define DEFiRet rsRetVal iRet = RS_RET_OK +-#define ABORT_FINALIZE(errCode) \ +- iRet = errCode;\ +- goto finalize_it; ++#define ABORT_FINALIZE(errCode) \ ++ do { \ ++ iRet = errCode; \ ++ goto finalize_it; \ ++ } while (0) + + /** Object ID. These are for internal checking. Each + * object is assigned a specific ID. This is contained in +--- rsyslog/module-template.h.orig 2007-08-16 17:29:13.000000000 +0200 ++++ rsyslog/module-template.h 2007-08-16 17:38:37.000000000 +0200 +@@ -226,10 +226,13 @@ finalize_it:\ + *pp = p;\ + } else {\ + /* cleanup, we failed */\ +- if(*ppOMSR != NULL)\ ++ if(*ppOMSR != NULL) {\ + OMSRdestruct(*ppOMSR);\ + *ppOMSR = NULL;\ +- } ++ }\ ++ if(pData != NULL)\ ++ freeInstance(&pData);\ ++ } + + #define ENDparseSelectorAct \ + return iRet;\ diff --git a/rsyslog-1.19.0-readfds.patch b/rsyslog-1.19.0-readfds.patch new file mode 100644 index 0000000..f5e4841 --- /dev/null +++ b/rsyslog-1.19.0-readfds.patch @@ -0,0 +1,18 @@ +--- rsyslog-1.19.0/syslogd.c.orig 2007-08-21 16:45:10.000000000 +0200 ++++ rsyslog-1.19.0/syslogd.c 2007-08-21 16:45:28.000000000 +0200 +@@ -5650,11 +5650,11 @@ static void mainloop(void) + #endif + #endif + +- errno = 0; +- FD_ZERO(&readfds); +- maxfds = 0; +- + while(!bFinished){ ++ errno = 0; ++ maxfds = 0; ++ FD_ZERO (&readfds); ++ + /* first check if we have any internal messages queued and spit them out */ + processImInternal(); + diff --git a/rsyslog.spec b/rsyslog.spec index 23d83bc..90b536b 100644 --- a/rsyslog.spec +++ b/rsyslog.spec @@ -1,20 +1,20 @@ -%define with_db 0 %define sbindir /sbin Summary: Enhanced system logging and kernel message trapping daemons Name: rsyslog -Version: 1.18.1 +Version: 1.19.0 Release: 1%{?dist} -License: GPL +License: GPLv2+ Group: System Environment/Daemons URL: http://www.rsyslog.com/ Source0: http://download.adiscon.com/rsyslog/%{name}-%{version}.tar.gz Source1: rsyslog.init Source2: rsyslog.sysconfig +Patch1: rsyslog-1.19.0-libPath.patch +Patch2: rsyslog-1.19.0-ommysqlLeak.patch +Patch3: rsyslog-1.19.0-modUnload.patch +Patch4: rsyslog-1.19.0-readfds.patch Conflicts: logrotate < 3.5.2 -%if %{with_db} -BuildRequires: mysql-devel >= 4.0 -%endif BuildRequires: zlib-devel Requires: logrotate Requires: bash >= 2.0 @@ -26,6 +26,12 @@ Provides: sysklogd = 1.4.3-1 Obsoletes: sysklogd < 1.4.3-1 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +%package mysql +Summary: MySQL support for rsyslog +Group: System Environment/Daemons +Requires: %name = %version-%release +BuildRequires: mysql-devel >= 4.0 + %description Rsyslog is an enhanced multi-threaded syslogd supporting, among others, MySQL, syslog/tcp, RFC 3195, permitted sender lists, filtering on any message part, @@ -35,11 +41,20 @@ suitable for enterprise-class, encryption protected syslog relay chains while at the same time being very easy to setup for the novice user. +%description mysql +The rsyslog-mysql package contains a dynamic shared object that will add +MySQL database support to rsyslog. + %prep %setup -q +%patch1 -p1 -b .libPath +%patch2 -p1 -b .ommysqlLeak +%patch3 -p1 -b .modUnload +%patch4 -p1 -b .readfds +autoreconf %build -%configure --sbindir=%{sbindir} +%configure --sbindir=%{sbindir} --disable-static make %{?_smp_mflags} %install @@ -55,6 +70,9 @@ install -p -m 644 redhat/rsyslog.conf $RPM_BUILD_ROOT%{_sysconfdir}/rsyslog.conf install -p -m 644 redhat/rsyslog.log $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/rsyslog install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/rsyslog +#get rid of *.la +rm $RPM_BUILD_ROOT/%{_libdir}/rsyslog/*.la + %clean rm -rf $RPM_BUILD_ROOT @@ -100,7 +118,15 @@ fi %{sbindir}/rfc3195d %{_mandir}/*/* +%files mysql +%defattr(-,root,root) +%doc createDB.sql +%{_libdir}/rsyslog/ommysql.so + %changelog +* Fri Aug 17 2007 Peter Vrabec 1.19.0-1 +- new upstream release with MySQL support(as plugin) + * Wed Aug 08 2007 Peter Vrabec 1.18.1-1 - upstream bugfix release diff --git a/sources b/sources index 78f0364..7711cf3 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -d91a522980cc6a21526743dfbba061d8 rsyslog-1.18.1.tar.gz +5a1852cd86e55dd0d3125e0d7a6af1ca rsyslog-1.19.0.tar.gz fe8fcd90c672701fa198dd1206df64ae rsyslog.init e10d2dc3238c2cf2a54933f10b19b9bf rsyslog.sysconfig