diff -ur syslog-ng-3.2.4.org/lib/gprocess.c syslog-ng-3.2.4/lib/gprocess.c --- syslog-ng-3.2.4.org/lib/gprocess.c 2011-09-10 19:11:42.848926449 +0200 +++ syslog-ng-3.2.4/lib/gprocess.c 2011-09-10 19:21:08.665586449 +0200 @@ -305,10 +305,23 @@ return; } +#define LINUX_VERSION(x,y,z) (0x10000*(x) + 0x100*(y) + z) + +static int +get_kernel_version(void) { + static struct utsname uts; + int x = 0, y = 0, z = 0; + if ((uname(&uts) == -1) || (sscanf(uts.release, "%u.%u.%u", &x, &y, &z) < 2)) { + msg_error("Unable to retrieve kernel version.", NULL); + return -1; + } + return LINUX_VERSION(x, y, z); +} + gboolean g_process_check_cap_syslog(void) { - int ret; + int ret, kver; if (have_capsyslog) return TRUE; @@ -320,6 +333,10 @@ if (ret == -1) return FALSE; + kver = get_kernel_version(); + if (kver > 0 && kver < LINUX_VERSION(2,6,38)) + return FALSE; + have_capsyslog = TRUE; return TRUE; } diff -ur syslog-ng-3.2.4.org/lib/gprocess.h syslog-ng-3.2.4/lib/gprocess.h --- syslog-ng-3.2.4.org/lib/gprocess.h 2011-09-10 19:11:42.848926449 +0200 +++ syslog-ng-3.2.4/lib/gprocess.h 2011-09-10 19:15:44.334619870 +0200 @@ -28,6 +28,7 @@ #include "syslog-ng.h" #include +#include #if ENABLE_LINUX_CAPS # include