mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-18 06:20:42 +01:00
Merge branch 'v4-stable-solaris' into master-solaris
Conflicts: ChangeLog configure.ac doc/manual.html tests/rt-init.c
This commit is contained in:
commit
40be6cb6e7
19
ChangeLog
19
ChangeLog
@ -411,13 +411,30 @@ Version 4.7.0 [v4-devel] (rgerhards), 2009-09-??
|
||||
Thanks for varmojfekoj for pointing me at this bug.
|
||||
- imported changes from 4.5.6 and below
|
||||
---------------------------------------------------------------------------
|
||||
Version 4.6.1 [v4-stable] (rgerhards), 2010-02-??
|
||||
Version 4.6.1 [v4-stable] (rgerhards), 2010-03-04
|
||||
- re-enabled old pipe output (using new module ompipe, built-in) after
|
||||
some problems with pipes (and especially in regard to xconsole) were
|
||||
discovered. Thanks to Michael Biebl for reporting the issues.
|
||||
- bugfix: potential problems with large file support could cause segfault
|
||||
... and other weird problems. This seemed to affect 32bit-platforms
|
||||
only, but I can not totally outrule there were issues on other
|
||||
platforms as well. The previous code could cause system data types
|
||||
to be defined inconsistently, and that could lead to various
|
||||
troubles. Special thanks go to the Mandriva team for identifying
|
||||
an initial problem, help discussing it and ultimately a fix they
|
||||
contributed.
|
||||
- bugfix: fixed problem that caused compilation on FreeBSD 9.0 to fail.
|
||||
bugtracker: http://bugzilla.adiscon.com/show_bug.cgi?id=181
|
||||
Thanks to Christiano for reporting.
|
||||
- bugfix: potential segfault in omfile when a dynafile open failed
|
||||
In that case, a partial cache entry was written, and some internal
|
||||
pointers (iCurrElt) not correctly updated. In the next iteration, that
|
||||
could lead to a segfault, especially if iCurrElt then points to the
|
||||
then-partial record. Not very likely, but could happen in practice.
|
||||
- bugfix (theoretical): potential segfault in omfile under low memory
|
||||
condition. This is only a theoretical bug, because it would only
|
||||
happen when strdup() fails to allocate memory - which is highly
|
||||
unlikely and will probably lead to all other sorts of errors.
|
||||
- bugfix: comment char ('#') in literal terminated script parsing
|
||||
and thus could not be used.
|
||||
but tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=119
|
||||
|
||||
19
configure.ac
19
configure.ac
@ -156,19 +156,12 @@ AC_SUBST(moddirs)
|
||||
|
||||
|
||||
# Large file support
|
||||
AC_ARG_ENABLE(largefile,
|
||||
[AS_HELP_STRING([--enable-largefile],[Enable large file support @<:@default=yes@:>@])],
|
||||
[case "${enableval}" in
|
||||
yes) enable_largefile="yes" ;;
|
||||
no) enable_largefile="no" ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-largefile) ;;
|
||||
esac],
|
||||
[enable_largefile="yes"]
|
||||
)
|
||||
if test "$enable_largefile" = "no"; then
|
||||
AC_DEFINE(NOLARGEFILE, 1, [Defined when large file support is disabled.])
|
||||
fi
|
||||
|
||||
# http://www.gnu.org/software/autoconf/manual/html_node/System-Services.html#index-AC_005fSYS_005fLARGEFILE-1028
|
||||
AC_SYS_LARGEFILE
|
||||
case "${enable_largefile}" in
|
||||
no) ;;
|
||||
*) enable_largefile="yes" ;;
|
||||
esac
|
||||
|
||||
# Regular expressions
|
||||
AC_ARG_ENABLE(regexp,
|
||||
|
||||
@ -67,6 +67,9 @@
|
||||
# define ATOMIC_DEC_AND_FETCH(data) (--(data))
|
||||
# define ATOMIC_FETCH_32BIT(data) (data)
|
||||
# define ATOMIC_STORE_1_TO_32BIT(data) (data) = 1
|
||||
# define ATOMIC_STORE_1_TO_INT(data) (data) = 1
|
||||
# define ATOMIC_STORE_0_TO_INT(data) (data) = 0
|
||||
# define ATOMIC_CAS_VAL(data, oldVal, newVal) (data) = (newVal)
|
||||
#endif
|
||||
|
||||
#endif /* #ifndef INCLUDED_ATOMIC_H */
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
#include <sys/syscall.h>
|
||||
/* debug.c
|
||||
*
|
||||
* This file proides debug and run time error analysis support. Some of the
|
||||
@ -553,6 +552,7 @@ if(pLog == NULL) {
|
||||
return; /* if we don't know it yet, we can not clean up... */
|
||||
}
|
||||
#endif
|
||||
#include <sys/syscall.h>
|
||||
|
||||
/* we found the last lock entry. We now need to see from which FuncDB we need to
|
||||
* remove it. This is recorded inside the mutex log entry.
|
||||
|
||||
@ -57,15 +57,6 @@
|
||||
* # End Config Settings # *
|
||||
* ############################################################# */
|
||||
|
||||
#ifndef NOLARGEFILE
|
||||
# undef _LARGEFILE_SOURCE
|
||||
# undef _LARGEFILE64_SOURCE
|
||||
# undef _FILE_OFFSET_BITS
|
||||
# define _LARGEFILE_SOURCE
|
||||
# define _LARGEFILE64_SOURCE
|
||||
# define _FILE_OFFSET_BITS 64
|
||||
#endif
|
||||
|
||||
/* portability: not all platforms have these defines, so we
|
||||
* define them here if they are missing. -- rgerhards, 2008-03-04
|
||||
*/
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
*
|
||||
* A copy of the GPL can be found in the file "COPYING" in this distribution.
|
||||
*/
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int __attribute__((unused)) argc, char __attribute__((unused)) *argv[])
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
*
|
||||
* A copy of the GPL can be found in the file "COPYING" in this distribution.
|
||||
*/
|
||||
#include "config.h"
|
||||
#include "rsyslog.h"
|
||||
#include "testbench.h"
|
||||
#include <stdio.h> /* must be last, else we get a zlib compile error on some platforms */
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
* A copy of the GPL can be found in the file "COPYING" in this distribution.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <syslog.h>
|
||||
|
||||
|
||||
@ -364,6 +364,7 @@ dynaFileFreeCacheEntries(instanceData *pData)
|
||||
for(i = 0 ; i < pData->iCurrCacheSize ; ++i) {
|
||||
dynaFileDelCacheEntry(pData->dynCache, i, 1);
|
||||
}
|
||||
pData->iCurrElt = -1; /* invalidate current element */
|
||||
ENDfunc;
|
||||
}
|
||||
|
||||
@ -547,6 +548,14 @@ prepareDynFile(instanceData *pData, uchar *newFileName, unsigned iMsgOpts)
|
||||
}
|
||||
|
||||
/* we have not found an entry */
|
||||
|
||||
/* invalidate iCurrElt as we may error-exit out of this function when the currrent
|
||||
* iCurrElt has been freed or otherwise become unusable. This is a precaution, and
|
||||
* performance-wise it may be better to do that in each of the exits. However, that
|
||||
* is error-prone, so I prefer to do it here. -- rgerhards, 2010-03-02
|
||||
*/
|
||||
pData->iCurrElt = -1;
|
||||
|
||||
if(iFirstFree == -1 && (pData->iCurrCacheSize < pData->iDynaFileCacheSize)) {
|
||||
/* there is space left, so set it to that index */
|
||||
iFirstFree = pData->iCurrCacheSize++;
|
||||
@ -578,7 +587,11 @@ prepareDynFile(instanceData *pData, uchar *newFileName, unsigned iMsgOpts)
|
||||
ABORT_FINALIZE(localRet);
|
||||
}
|
||||
|
||||
CHKmalloc(pCache[iFirstFree]->pName = ustrdup(newFileName));
|
||||
if((pCache[iFirstFree]->pName = ustrdup(newFileName)) == NULL) {
|
||||
/* we need to discard the entry, otherwise things could lead to a segfault! */
|
||||
dynaFileDelCacheEntry(pCache, iFirstFree, 1);
|
||||
ABORT_FINALIZE(RS_RET_OUT_OF_MEMORY);
|
||||
}
|
||||
pCache[iFirstFree]->pStrm = pData->pStrm;
|
||||
pCache[iFirstFree]->clkTickAccessed = getClockFileAccess();
|
||||
pData->iCurrElt = iFirstFree;
|
||||
@ -831,7 +844,6 @@ BEGINdoHUP
|
||||
CODESTARTdoHUP
|
||||
if(pData->bDynamicName) {
|
||||
dynaFileFreeCacheEntries(pData);
|
||||
pData->iCurrElt = -1; /* invalidate current element */
|
||||
} else {
|
||||
if(pData->pStrm != NULL) {
|
||||
strm.Destruct(&pData->pStrm);
|
||||
|
||||
@ -52,8 +52,12 @@
|
||||
#include <sys/param.h>
|
||||
#ifdef HAVE_UTMP_H
|
||||
# include <utmp.h>
|
||||
# define STRUCTUTMP struct utmp
|
||||
# define UTNAME ut_name
|
||||
#else
|
||||
# include <utmpx.h>
|
||||
# define STRUCTUTMP struct utmpx
|
||||
# define UTNAME ut_user
|
||||
#endif
|
||||
#include <unistd.h>
|
||||
#include <sys/uio.h>
|
||||
@ -128,6 +132,12 @@ ENDdbgPrintInstInfo
|
||||
* need! rgerhards 2005-03-18
|
||||
*/
|
||||
#ifdef OS_BSD
|
||||
/* Since version 900007, FreeBSD has a POSIX compliant <utmpx.h> */
|
||||
#if defined(__FreeBSD__) && (__FreeBSD_version >= 900007)
|
||||
# define setutent(void) setutxent(void)
|
||||
# define getutent(void) getutxent(void)
|
||||
# define endutent(void) endutxent(void)
|
||||
#else
|
||||
static FILE *BSD_uf = NULL;
|
||||
void setutent(void)
|
||||
{
|
||||
@ -138,9 +148,9 @@ void setutent(void)
|
||||
}
|
||||
}
|
||||
|
||||
struct utmp* getutent(void)
|
||||
STRUCTUTMP* getutent(void)
|
||||
{
|
||||
static struct utmp st_utmp;
|
||||
static STRUCTUTMP st_utmp;
|
||||
|
||||
if(fread((char *)&st_utmp, sizeof(st_utmp), 1, BSD_uf) != 1)
|
||||
return NULL;
|
||||
@ -153,6 +163,7 @@ void endutent(void)
|
||||
fclose(BSD_uf);
|
||||
BSD_uf = NULL;
|
||||
}
|
||||
#endif /* if defined(__FreeBSD__) */
|
||||
#endif /* #ifdef OS_BSD */
|
||||
|
||||
|
||||
@ -177,8 +188,8 @@ static rsRetVal wallmsg(uchar* pMsg, instanceData *pData)
|
||||
int errnoSave;
|
||||
int ttyf;
|
||||
int wrRet;
|
||||
struct utmp ut;
|
||||
struct utmp *uptr;
|
||||
STRUCTUTMP ut;
|
||||
STRUCTUTMP *uptr;
|
||||
struct stat statb;
|
||||
DEFiRet;
|
||||
|
||||
@ -191,13 +202,13 @@ static rsRetVal wallmsg(uchar* pMsg, instanceData *pData)
|
||||
while((uptr = getutent())) {
|
||||
memcpy(&ut, uptr, sizeof(ut));
|
||||
/* is this slot used? */
|
||||
if(ut.ut_name[0] == '\0')
|
||||
if(ut.UTNAME[0] == '\0')
|
||||
continue;
|
||||
#ifndef OS_BSD
|
||||
if(ut.ut_type != USER_PROCESS)
|
||||
continue;
|
||||
#endif
|
||||
if(!(strncmp (ut.ut_name,"LOGIN", 6))) /* paranoia */
|
||||
if(!(strncmp (ut.UTNAME,"LOGIN", 6))) /* paranoia */
|
||||
continue;
|
||||
|
||||
/* should we send the message to this user? */
|
||||
@ -207,7 +218,7 @@ static rsRetVal wallmsg(uchar* pMsg, instanceData *pData)
|
||||
i = MAXUNAMES;
|
||||
break;
|
||||
}
|
||||
if(strncmp(pData->uname[i], ut.ut_name, UNAMESZ) == 0)
|
||||
if(strncmp(pData->uname[i], ut.UTNAME, UNAMESZ) == 0)
|
||||
break;
|
||||
}
|
||||
if(i == MAXUNAMES) /* user not found? */
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
*
|
||||
* A copy of the GPL can be found in the file "COPYING" in this distribution.
|
||||
*/
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
@ -2068,7 +2068,7 @@ static void printVersion(void)
|
||||
#else
|
||||
printf("\tFEATURE_REGEXP:\t\t\t\tNo\n");
|
||||
#endif
|
||||
#ifndef NOLARGEFILE
|
||||
#if defined(_LARGE_FILES) || (defined (_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS >= 64)
|
||||
printf("\tFEATURE_LARGEFILE:\t\t\tYes\n");
|
||||
#else
|
||||
printf("\tFEATURE_LARGEFILE:\t\t\tNo\n");
|
||||
|
||||
@ -22,6 +22,7 @@
|
||||
files created by rsyslog's zip output writer.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user