Merge branch 'v4-stable-solaris' into master-solaris

Conflicts:
	ChangeLog
	configure.ac
	doc/manual.html
	tests/rt-init.c
This commit is contained in:
Rainer Gerhards 2010-03-05 09:54:42 +01:00
commit 40be6cb6e7
13 changed files with 66 additions and 34 deletions

View File

@ -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

View File

@ -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,

View File

@ -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 */

View File

@ -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.

View File

@ -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
*/

View File

@ -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[])

View File

@ -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 */

View File

@ -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>

View File

@ -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);

View File

@ -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? */

View File

@ -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>

View File

@ -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");

View File

@ -22,6 +22,7 @@
files created by rsyslog's zip output writer.
*/
#include "config.h"
#include <stdio.h>
#include <string.h>
#include <assert.h>