]> TLD Linux GIT Repositories - packages/syslog-ng.git/blob - cap_syslog-vserver-workaround.patch
- more upstart cleanups
[packages/syslog-ng.git] / cap_syslog-vserver-workaround.patch
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  }
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>