File sudo-1.8.10p3-CVE-2016-7032.patch of Package sudo.5652

# HG changeset patch
# User Todd C. Miller <Todd.Miller@courtesan.com>
# Date 1443474600 21600
# Node ID 58a5c06b5257991a3dbbde25cb2e9852f42a7014
# Parent  22fb750d92a9bad071720e31d577e97bbce18ed8
Also interpose system(3).  On glibc systems you cannot interpose
the syscalls used internally by libc.

Index: sudo-1.8.10p3/src/sudo_noexec.c
===================================================================
--- sudo-1.8.10p3.orig/src/sudo_noexec.c
+++ sudo-1.8.10p3/src/sudo_noexec.c
@@ -20,6 +20,8 @@
 
 #include <errno.h>
 #include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif /* HAVE_UNISTD_H */
@@ -63,6 +65,12 @@ typedef struct interpose_s {
     return -1;					\
 }
 
+#define DUMMY1(fn, t1)				\
+__dso_public int				\
+FN_NAME(fn)(t1 a1)				\
+DUMMY_BODY					\
+INTERPOSE(fn)
+
 #define DUMMY2(fn, t1, t2)			\
 __dso_public int				\
 FN_NAME(fn)(t1 a1, t2 a2)			\
@@ -96,6 +104,7 @@ DUMMY_VA(execlp, const char *, const cha
 DUMMY2(execv, const char *, char * const *)
 DUMMY2(execvp, const char *, char * const *)
 DUMMY3(execve, const char *, char * const *, char * const *)
+DUMMY1(system, const char *)
 
 /*
  * Private versions of the above.
@@ -202,3 +211,12 @@ DUMMY6(_posix_spawnp, pid_t *, const cha
 #ifdef HAVE_POSIX___SPAWNP
 DUMMY6(__posix_spawnp, pid_t *, const char *, const posix_spawn_file_actions_t *, const posix_spawnattr_t *, char * const *, char * const *)
 #endif
+
+/* popen(3) returns FILE *, not int so we can't use a wrapper. */
+__dso_public FILE *
+FN_NAME(popen)(const char *c, const char *t)
+{
+    errno = EACCES;
+    return NULL;
+}
+INTERPOSE(popen)
openSUSE Build Service is sponsored by