]>
Commit | Line | Data |
---|---|---|
3a4f861c AM |
1 | diff -ur syslog-ng-3.2.4.org/lib/gprocess.c syslog-ng-3.2.4/lib/gprocess.c |
2 | --- syslog-ng-3.2.4.org/lib/gprocess.c 2011-09-10 19:11:42.848926449 +0200 | |
3 | +++ syslog-ng-3.2.4/lib/gprocess.c 2011-09-10 19:21:08.665586449 +0200 | |
4 | @@ -305,10 +305,23 @@ | |
5 | return; | |
6 | } | |
7 | ||
8 | +#define LINUX_VERSION(x,y,z) (0x10000*(x) + 0x100*(y) + z) | |
9 | + | |
10 | +static int | |
11 | +get_kernel_version(void) { | |
12 | + static struct utsname uts; | |
13 | + int x = 0, y = 0, z = 0; | |
14 | + if ((uname(&uts) == -1) || (sscanf(uts.release, "%u.%u.%u", &x, &y, &z) < 2)) { | |
15 | + msg_error("Unable to retrieve kernel version.", NULL); | |
16 | + return -1; | |
17 | + } | |
18 | + return LINUX_VERSION(x, y, z); | |
19 | +} | |
20 | + | |
21 | gboolean | |
22 | g_process_check_cap_syslog(void) | |
23 | { | |
24 | - int ret; | |
25 | + int ret, kver; | |
26 | ||
27 | if (have_capsyslog) | |
28 | return TRUE; | |
29 | @@ -320,6 +333,10 @@ | |
30 | if (ret == -1) | |
31 | return FALSE; | |
32 | ||
33 | + kver = get_kernel_version(); | |
34 | + if (kver > 0 && kver < LINUX_VERSION(2,6,38)) | |
35 | + return FALSE; | |
36 | + | |
37 | have_capsyslog = TRUE; | |
38 | return TRUE; | |
39 | } | |
3a4f861c AM |
40 | diff -ur syslog-ng-3.2.4.org/lib/gprocess.h syslog-ng-3.2.4/lib/gprocess.h |
41 | --- syslog-ng-3.2.4.org/lib/gprocess.h 2011-09-10 19:11:42.848926449 +0200 | |
42 | +++ syslog-ng-3.2.4/lib/gprocess.h 2011-09-10 19:15:44.334619870 +0200 | |
43 | @@ -28,6 +28,7 @@ | |
44 | #include "syslog-ng.h" | |
45 | ||
46 | #include <sys/types.h> | |
47 | +#include <sys/utsname.h> | |
48 | ||
49 | #if ENABLE_LINUX_CAPS | |
50 | # include <sys/capability.h> |