Hello community,

here is the log from the commit of package rsyslog for openSUSE:Factory checked 
in at 2013-11-04 07:09:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rsyslog (Old)
 and      /work/SRC/openSUSE:Factory/.rsyslog.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rsyslog"

Changes:
--------
--- /work/SRC/openSUSE:Factory/rsyslog/rsyslog.changes  2013-10-29 
11:04:24.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.rsyslog.new/rsyslog.changes     2013-11-04 
07:09:09.000000000 +0100
@@ -1,0 +2,14 @@
+Thu Oct 31 20:20:51 UTC 2013 - [email protected]
+
+- update to 7.4.6 [v7.4-stable] [bnc#848574]
+- bugfix: potential abort during HUP
+- bugfix: imtcp flowControl parameter incorrectly defaulted to "off"
+- now requires libestr 0.1.9 for number handling in RainerScript
+- bugfix: memory leak in strlen() RainerScript function
+- bugfix: buffer overrun if re_extract function was called for submatch 50
+- bugfix: memleak in re_extract() function
+- bugfix: potential abort in RainerScript optimizer
+- bugfix: memory leak in omhiredis
+- bugfix: segfault if variable was assigned to non-container subtree
+
+-------------------------------------------------------------------
@@ -4 +18 @@
-- update to 7.4.5 [v7.5-stable]
+- update to 7.4.5 [v7.4-stable]

Old:
----
  rsyslog-7.4.5.tar.gz

New:
----
  rsyslog-7.4.6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rsyslog.spec ++++++
--- /var/tmp/diff_new_pack.55Yw8D/_old  2013-11-04 07:09:10.000000000 +0100
+++ /var/tmp/diff_new_pack.55Yw8D/_new  2013-11-04 07:09:10.000000000 +0100
@@ -20,7 +20,7 @@
 Summary:        The enhanced syslogd for Linux and Unix
 License:        (GPL-3.0+ and Apache-2.0)
 Group:          System/Daemons
-Version:        7.4.5
+Version:        7.4.6
 Release:        0
 %if 0%{?suse_version} >= 1210
 %bcond_without  systemd
@@ -152,10 +152,10 @@
 # but json check is unconditional
 %if 0%{?suse_version} >= 1210
 BuildRequires:  pkgconfig(json) >= 0.9
-BuildRequires:  pkgconfig(libestr) >= 0.1.8
+BuildRequires:  pkgconfig(libestr) >= 0.1.9
 %else
 BuildRequires:  libee-devel
-BuildRequires:  libestr-devel >= 0.1.8
+BuildRequires:  libestr-devel >= 0.1.9
 BuildRequires:  libjson-devel
 %endif
 %if 0%{?suse_version} >= 1220

++++++ rsyslog-7.4.5.tar.gz -> rsyslog-7.4.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rsyslog-7.4.5/ChangeLog new/rsyslog-7.4.6/ChangeLog
--- old/rsyslog-7.4.5/ChangeLog 2013-10-16 12:43:18.000000000 +0200
+++ new/rsyslog-7.4.6/ChangeLog 2013-10-29 16:09:36.000000000 +0100
@@ -1,4 +1,34 @@
 ---------------------------------------------------------------------------
+Version 7.4.6  [v7.4-stable] 2013-10-31
+- bugfix: potential abort during HUP
+  This could happen when one of imklog, imzmq3, imkmsg, impstats,
+  imjournal, or imuxsock were under heavy load during a HUP.
+  closes: http://bugzilla.adiscon.com/show_bug.cgi?id=489
+  Thanks to Guy Rozendorn for reporting the problem and Peval Levhshin for
+  his analysis.
+- bugfix: imtcp flowControl parameter incorrectly defaulted to "off"
+  This could cause message loss on systems under heavy load and was
+  a change-of-behaviour to previous version. This is a regression
+  most probably introduced in 5.9.0 (but did not try hard to find the
+  exact point of its introduction).
+- now requires libestr 0.1.9 as earlier versions lead to problems with
+  number handling in RainerScript
+- bugfix: memory leak in strlen() RainerScript function
+  Thanks to Gregoire Seux for reportig this bug.
+  closes: http://bugzilla.adiscon.com/show_bug.cgi?id=486
+- bugfix: buffer overrun if re_extract function was called for submatch 50
+  Thanks to Pavel Levshin for reporting the problem and its location.
+- bugfix: memleak in re_extract() function
+  Thanks to Pavel Levshin for reporting this problem.
+- bugfix: potential abort in RainerScript optimizer
+  closes: http://bugzilla.adiscon.com/show_bug.cgi?id=488
+  Thanks to Thomas Doll for reporting the problem and Pavel Levshin for
+  fixing it.
+- bugfix: memory leak in omhiredis
+  Thanks to Pavel Levshin for the fix
+- bugfix: segfault if variable was assigned to non-container subtree
+  Thanks to Pavel Levshin for the fix
+---------------------------------------------------------------------------
 Version 7.4.5  [v7.4-stable] 2013-10-22
 - mmanon: removed the check for specific "terminator characters" after 
   last octet. As it turned out, this didn't work in practice as there
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rsyslog-7.4.5/configure new/rsyslog-7.4.6/configure
--- old/rsyslog-7.4.5/configure 2013-10-16 12:46:04.000000000 +0200
+++ new/rsyslog-7.4.6/configure 2013-10-29 16:10:20.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for rsyslog 7.4.5.
+# Generated by GNU Autoconf 2.68 for rsyslog 7.4.6.
 #
 # Report bugs to <[email protected]>.
 #
@@ -570,8 +570,8 @@
 # Identity of this package.
 PACKAGE_NAME='rsyslog'
 PACKAGE_TARNAME='rsyslog'
-PACKAGE_VERSION='7.4.5'
-PACKAGE_STRING='rsyslog 7.4.5'
+PACKAGE_VERSION='7.4.6'
+PACKAGE_STRING='rsyslog 7.4.6'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1594,7 +1594,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures rsyslog 7.4.5 to adapt to many kinds of systems.
+\`configure' configures rsyslog 7.4.6 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1664,7 +1664,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of rsyslog 7.4.5:";;
+     short | recursive ) echo "Configuration of rsyslog 7.4.6:";;
    esac
   cat <<\_ACEOF
 
@@ -1909,7 +1909,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-rsyslog configure 7.4.5
+rsyslog configure 7.4.6
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2488,7 +2488,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by rsyslog $as_me 7.4.5, which was
+It was created by rsyslog $as_me 7.4.6, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -3303,7 +3303,7 @@
 
 # Define the identity of the package.
  PACKAGE='rsyslog'
- VERSION='7.4.5'
+ VERSION='7.4.6'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -13211,12 +13211,12 @@
     pkg_cv_LIBESTR_CFLAGS="$LIBESTR_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libestr >= 0.1.8\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libestr >= 0.1.8") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libestr >= 0.1.9\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libestr >= 0.1.9") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_LIBESTR_CFLAGS=`$PKG_CONFIG --cflags "libestr >= 0.1.8" 2>/dev/null`
+  pkg_cv_LIBESTR_CFLAGS=`$PKG_CONFIG --cflags "libestr >= 0.1.9" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -13228,12 +13228,12 @@
     pkg_cv_LIBESTR_LIBS="$LIBESTR_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libestr >= 0.1.8\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "libestr >= 0.1.8") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists 
--print-errors \"libestr >= 0.1.9\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libestr >= 0.1.9") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_LIBESTR_LIBS=`$PKG_CONFIG --libs "libestr >= 0.1.8" 2>/dev/null`
+  pkg_cv_LIBESTR_LIBS=`$PKG_CONFIG --libs "libestr >= 0.1.9" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -13254,14 +13254,14 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBESTR_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "libestr >= 0.1.8" 2>&1`
+               LIBESTR_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "libestr >= 0.1.9" 2>&1`
         else
-               LIBESTR_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"libestr >= 0.1.8" 2>&1`
+               LIBESTR_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"libestr >= 0.1.9" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$LIBESTR_PKG_ERRORS" >&5
 
-       as_fn_error $? "Package requirements (libestr >= 0.1.8) were not met:
+       as_fn_error $? "Package requirements (libestr >= 0.1.9) were not met:
 
 $LIBESTR_PKG_ERRORS
 
@@ -20766,7 +20766,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by rsyslog $as_me 7.4.5, which was
+This file was extended by rsyslog $as_me 7.4.6, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -20832,7 +20832,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-rsyslog config.status 7.4.5
+rsyslog config.status 7.4.6
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rsyslog-7.4.5/configure.ac 
new/rsyslog-7.4.6/configure.ac
--- old/rsyslog-7.4.5/configure.ac      2013-10-16 12:44:10.000000000 +0200
+++ new/rsyslog-7.4.6/configure.ac      2013-10-29 16:09:47.000000000 +0100
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.61)
-AC_INIT([rsyslog],[7.4.5],[[email protected]])
+AC_INIT([rsyslog],[7.4.6],[[email protected]])
 AM_INIT_AUTOMAKE
 
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
@@ -32,7 +32,7 @@
 PKG_PROG_PKG_CONFIG
 
 # modules we require
-PKG_CHECK_MODULES(LIBESTR, libestr >= 0.1.8)
+PKG_CHECK_MODULES(LIBESTR, libestr >= 0.1.9)
 PKG_CHECK_MODULES([JSON_C], [json],, [
        PKG_CHECK_MODULES([JSON_C], [json-c])
 ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rsyslog-7.4.5/doc/manual.html 
new/rsyslog-7.4.6/doc/manual.html
--- old/rsyslog-7.4.5/doc/manual.html   2013-10-16 12:44:29.000000000 +0200
+++ new/rsyslog-7.4.6/doc/manual.html   2013-10-29 16:09:54.000000000 +0100
@@ -19,7 +19,7 @@
 <p><b>Please visit the <a href="http://www.rsyslog.com/sponsors";>rsyslog 
sponsor's page</a>
 to honor the project sponsors or become one yourself!</b> We are very grateful 
for any help towards the
 project goals.</p>
-<p><b>This documentation is for version 7.4.5 (v7.4-stable branch) of 
rsyslog.</b>
+<p><b>This documentation is for version 7.4.6 (v7.4-stable branch) of 
rsyslog.</b>
 Visit the <i><a href="http://www.rsyslog.com/status";>rsyslog status 
page</a></i></b>
 to obtain current version information and project status.
 </p><p><b>If you like rsyslog, you might
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rsyslog-7.4.5/grammar/rainerscript.c 
new/rsyslog-7.4.6/grammar/rainerscript.c
--- old/rsyslog-7.4.5/grammar/rainerscript.c    2013-10-16 12:41:54.000000000 
+0200
+++ new/rsyslog-7.4.6/grammar/rainerscript.c    2013-10-29 16:08:48.000000000 
+0100
@@ -1259,7 +1259,7 @@
        str = (char*) var2CString(&r[0], &bMustFree);
        matchnbr = (short) var2Number(&r[2], NULL);
        submatchnbr = (size_t) var2Number(&r[3], NULL);
-       if(submatchnbr > sizeof(pmatch)/sizeof(regmatch_t)) {
+       if(submatchnbr >= sizeof(pmatch)/sizeof(regmatch_t)) {
                DBGPRINTF("re_extract() submatch %d is too large\n", 
submatchnbr);
                bHadNoMatch = 1;
                goto finalize_it;
@@ -1307,11 +1307,12 @@
                                        iLenBuf);
        }
 
+finalize_it:
        if(bMustFree) free(str);
        if(r[0].datatype == 'S') es_deleteStr(r[0].d.estr);
        if(r[2].datatype == 'S') es_deleteStr(r[2].d.estr);
        if(r[3].datatype == 'S') es_deleteStr(r[3].d.estr);
-finalize_it:
+
        if(bHadNoMatch) {
                cnfexprEval(func->expr[4], &r[4], usrptr);
                estr = var2String(&r[4], &bMustFree);
@@ -1358,6 +1359,7 @@
                        estr = var2String(&r[0], &bMustFree);
                        ret->d.n = es_strlen(estr);
                        if(bMustFree) es_deleteStr(estr);
+                       if(r[0].datatype == 'S') es_deleteStr(r[0].d.estr);
                }
                ret->datatype = 'N';
                break;
@@ -2924,12 +2926,15 @@
                                expr->r = exprswap;
                        }
                }
-               if(expr->l->nodetype == 'V') {
-                       expr = cnfexprOptimize_CMP_var(expr);
-               }
                if(expr->r->nodetype == 'A') {
                        cnfexprOptimize_CMPEQ_arr((struct cnfarray *)expr->r);
                }
+               /* This should be evaluated last because it may change expr
+                * to a function.
+                */
+               if(expr->l->nodetype == 'V') {
+                       expr = cnfexprOptimize_CMP_var(expr);
+               }
                break;
        case CMP_LE:
        case CMP_GE:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rsyslog-7.4.5/plugins/imtcp/imtcp.c 
new/rsyslog-7.4.6/plugins/imtcp/imtcp.c
--- old/rsyslog-7.4.5/plugins/imtcp/imtcp.c     2013-10-16 12:41:49.000000000 
+0200
+++ new/rsyslog-7.4.6/plugins/imtcp/imtcp.c     2013-10-29 16:08:48.000000000 
+0100
@@ -408,7 +408,7 @@
        loadModConf->iTCPLstnMax = 20;
        loadModConf->bSuppOctetFram = 1;
        loadModConf->iStrmDrvrMode = 0;
-       loadModConf->bUseFlowControl = 0;
+       loadModConf->bUseFlowControl = 1;
        loadModConf->bKeepAlive = 0;
        loadModConf->bEmitMsgOnClose = 0;
        loadModConf->iAddtlFrameDelim = TCPSRV_NO_ADDTL_DELIMITER;
@@ -631,7 +631,7 @@
        cs.iTCPLstnMax = 20;
        cs.bSuppOctetFram = 1;
        cs.iStrmDrvrMode = 0;
-       cs.bUseFlowControl = 0;
+       cs.bUseFlowControl = 1;
        cs.bKeepAlive = 0;
        cs.bEmitMsgOnClose = 0;
        cs.iAddtlFrameDelim = TCPSRV_NO_ADDTL_DELIMITER;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rsyslog-7.4.5/plugins/omhiredis/omhiredis.c 
new/rsyslog-7.4.6/plugins/omhiredis/omhiredis.c
--- old/rsyslog-7.4.5/plugins/omhiredis/omhiredis.c     2013-09-18 
10:54:18.000000000 +0200
+++ new/rsyslog-7.4.6/plugins/omhiredis/omhiredis.c     2013-10-16 
13:30:36.000000000 +0200
@@ -198,7 +198,7 @@
         /*  TODO: add error checking here! */
         free ( pData->replies[i] );
     }
-    free ( pData->replies );
+    freeReplyObject ( pData->replies );
     pData->count = 0;
 ENDendTransaction
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rsyslog-7.4.5/runtime/glbl.c 
new/rsyslog-7.4.6/runtime/glbl.c
--- old/rsyslog-7.4.5/runtime/glbl.c    2013-10-16 12:41:49.000000000 +0200
+++ new/rsyslog-7.4.6/runtime/glbl.c    2013-10-29 16:08:48.000000000 +0100
@@ -32,6 +32,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
+#include <pthread.h>
 #include <assert.h>
 
 #include "rsyslog.h"
@@ -71,6 +72,7 @@
 static int bDisableDNS = 0; /* don't look up IP addresses of remote messages */
 static prop_t *propLocalIPIF = NULL;/* IP address to report for the local host 
(default is 127.0.0.1) */
 static prop_t *propLocalHostName = NULL;/* our hostname as FQDN - read-only 
after startup */
+static prop_t *propLocalHostNameToDelete = NULL;/* see GenerateLocalHostName 
function hdr comment! */
 static uchar *LocalHostName = NULL;/* our hostname  - read-only after startup, 
except HUP */
 static uchar *LocalHostNameOverride = NULL;/* user-overridden hostname - 
read-only after startup */
 static uchar *LocalFQDNName = NULL;/* our hostname as FQDN - read-only after 
startup, except HUP */
@@ -379,17 +381,31 @@
 /* generate the local hostname property. This must be done after the hostname 
info
  * has been set as well as PreserveFQDN.
  * rgerhards, 2009-06-30
+ * NOTE: This function tries to avoid locking by not destructing the previous 
value
+ * immediately. This is so that current readers can  continue to use the 
previous name.
+ * Otherwise, we would need to use read/write locks to protect the update 
process.
+ * In order to do so, we save the previous value and delete it when we are 
called again
+ * the next time. Note that this in theory is racy and can lead to a 
double-free.
+ * In practice, however, the window of exposure to trigger this is extremely 
short
+ * and as this functions is very infrequently being called (on HUP), the 
trigger
+ * condition for this bug is so highly unlikely that it never occurs in 
practice.
+ * Probably if you HUP rsyslog every few milliseconds, but who does that...
+ * To further reduce risk potential, we do only update the property when there
+ * actually is a hostname change, which makes it even less likely.
+ * rgerhards, 2013-10-28
  */
 static rsRetVal
 GenerateLocalHostNameProperty(void)
 {
-       DEFiRet;
+       uchar *pszPrev;
+       int lenPrev;
+       prop_t *hostnameNew;
        uchar *pszName;
+       DEFiRet;
 
-       if(propLocalHostName != NULL)
-               prop.Destruct(&propLocalHostName);
+       if(propLocalHostNameToDelete != NULL)
+               prop.Destruct(&propLocalHostNameToDelete);
 
-       CHKiRet(prop.Construct(&propLocalHostName));
        if(LocalHostNameOverride == NULL) {
                if(LocalHostName == NULL)
                        pszName = (uchar*) "[localhost]";
@@ -403,8 +419,20 @@
                pszName = LocalHostNameOverride;
        }
        DBGPRINTF("GenerateLocalHostName uses '%s'\n", pszName);
-       CHKiRet(prop.SetString(propLocalHostName, pszName, ustrlen(pszName)));
-       CHKiRet(prop.ConstructFinalize(propLocalHostName));
+
+       if(propLocalHostName == NULL)
+               pszPrev = (uchar*)""; /* make sure strcmp() below does not 
match */
+       else
+               prop.GetString(propLocalHostName, &pszPrev, &lenPrev);
+
+       if(ustrcmp(pszPrev, pszName)) {
+               /* we need to update */
+               CHKiRet(prop.Construct(&hostnameNew));
+               CHKiRet(prop.SetString(hostnameNew, pszName, ustrlen(pszName)));
+               CHKiRet(prop.ConstructFinalize(hostnameNew));
+               propLocalHostNameToDelete = propLocalHostName;
+               propLocalHostName = hostnameNew;
+       }
 
 finalize_it:
        RETiRet;
@@ -667,6 +695,8 @@
        free(LocalHostNameOverride);
        free(LocalFQDNName);
        objRelease(prop, CORE_COMPONENT);
+       if(propLocalHostNameToDelete != NULL)
+               prop.Destruct(&propLocalHostNameToDelete);
        DESTROY_ATOMIC_HELPER_MUT(mutTerminateInputs);
 ENDObjClassExit(glbl)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rsyslog-7.4.5/runtime/msg.c 
new/rsyslog-7.4.6/runtime/msg.c
--- old/rsyslog-7.4.5/runtime/msg.c     2013-10-16 12:41:49.000000000 +0200
+++ new/rsyslog-7.4.6/runtime/msg.c     2013-10-29 16:08:48.000000000 +0100
@@ -3934,6 +3934,12 @@
                }
                leaf = jsonPathGetLeaf(name, ustrlen(name));
                CHKiRet(jsonPathFindParent(pM, name, leaf, &parent, 1));
+               if (json_object_get_type(parent) != json_type_object) {
+                       DBGPRINTF("msgAddJSON: not a container in json path,"
+                               "name is '%s'\n", name);
+                       json_object_put(json);
+                       ABORT_FINALIZE(RS_RET_INVLD_SETOP);
+               }
                leafnode = json_object_object_get(parent, (char*)leaf);
                if(leafnode == NULL) {
                        json_object_object_add(parent, (char*)leaf, json);

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to