~ubuntu-branches/ubuntu/lucid/eglibc/lucid-updates

« back to all changes in this revision

Viewing changes to debian/patches/any/glibc-CVE-2011-4609.patch

  • Committer: Package Import Robot
  • Author(s): Steve Beattie
  • Date: 2012-03-07 10:28:32 UTC
  • mfrom: (42.1.3 lucid-security)
  • Revision ID: package-import@ubuntu.com-20120307102832-om8ercp049cypxlc
Tags: 2.11.1-0ubuntu7.10
* SECURITY UPDATE: timezone header parsing integer overflow (LP: #906961)
  - debian/patches/any/glibc-CVE-2009-5029.patch: Check values from
    TZ file header
  - CVE-2009-5029
* SECURITY UPDATE: memory consumption denial of service in fnmatch
  - debian/patches/any/glibc-CVE-2011-1071.patch: avoid too much
    stack use in fnmatch.
  - CVE-2011-1071
* SECURITY UPDATE: /etc/mtab corruption denial of service
  - debian/patches/any/glibc-CVE-2011-1089.patch: Report write
    error in addmnt even for cached streams
  - CVE-2011-1089
* SECURITY UPDATE: insufficient locale environment sanitization
  - debian/patches/any/glibc-CVE-2011-1095.patch: escape contents of
    LANG environment variable.
  - CVE-2011-1095
* SECURITY UPDATE: ld.so insecure handling of privileged programs'
  RPATHs with $ORIGIN
  - debian/patches/any/glibc-CVE-2011-1658.patch: improve handling of
    RPATH and ORIGIN
  - CVE-2011-1658
* SECURITY UPDATE: fnmatch integer overflow
  - debian/patches/any/glibc-CVE-2011-1659.patch: check size of
    pattern in wide character representation
  - CVE-2011-1659
* SECURITY UPDATE: signedness bug in memcpy_ssse3
  - debian/patches/any/glibc-CVE-2011-2702.patch: use unsigned
    comparison instructions
  - CVE-2011-2702
* SECURITY UPDATE: DoS in RPC implementation (LP: #901716)
  - debian/patches/any/glibc-CVE-2011-4609.patch: nanosleep when too
    many open fds is detected
  - CVE-2011-4609
* SECURITY UPDATE: vfprintf nargs overflow leading to FORTIFY
  check bypass
  - debian/patches/any/glibc-CVE-2012-0864.patch: check for integer
    overflow
  - CVE-2012-0864
* debian/testsuite-checking/expected-results-x86_64-linux-gnu-libc,
  debian/testsuite-checking/expected-results-i686-linux-gnu-i386,
  debian/testsuite-checking/expected-results-arm-linux-gnueabi-libc:
  update for pre-existing testsuite failures that prevents FTBFS
  when the testsuite is enabled.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Origin: Red Hat, glibc-2.12-1.47.el6_2.5.src.rpm:glibc-rh767692-2.patch
 
2
Bug: https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/901716
 
3
Subject: DoS in RPC implementation
 
4
 
 
5
CVE-2011-4069
 
6
 
 
7
 
 
8
---
 
9
 sunrpc/svc_tcp.c  |    6 ++++++
 
10
 sunrpc/svc_udp.c  |   13 +++++++++++--
 
11
 sunrpc/svc_unix.c |    6 ++++++
 
12
 3 files changed, 23 insertions(+), 2 deletions(-)
 
13
 
 
14
Index: b/sunrpc/svc_tcp.c
 
15
===================================================================
 
16
--- a/sunrpc/svc_tcp.c
 
17
+++ b/sunrpc/svc_tcp.c
 
18
@@ -44,6 +44,7 @@
 
19
 #include <sys/poll.h>
 
20
 #include <errno.h>
 
21
 #include <stdlib.h>
 
22
+#include <time.h>
 
23
 
 
24
 #ifdef USE_IN_LIBIO
 
25
 # include <wchar.h>
 
26
@@ -243,6 +244,11 @@ again:
 
27
     {
 
28
       if (errno == EINTR)
 
29
        goto again;
 
30
+      if (errno == EMFILE)
 
31
+        {
 
32
+          struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 };
 
33
+          __nanosleep(&ts , NULL);
 
34
+        }
 
35
       return FALSE;
 
36
     }
 
37
   /*
 
38
Index: b/sunrpc/svc_udp.c
 
39
===================================================================
 
40
--- a/sunrpc/svc_udp.c
 
41
+++ b/sunrpc/svc_udp.c
 
42
@@ -40,6 +40,7 @@
 
43
 #include <sys/socket.h>
 
44
 #include <errno.h>
 
45
 #include <libintl.h>
 
46
+#include <time.h>
 
47
 
 
48
 #ifdef IP_PKTINFO
 
49
 #include <sys/uio.h>
 
50
@@ -272,8 +273,16 @@ again:
 
51
                       (int) su->su_iosz, 0,
 
52
                       (struct sockaddr *) &(xprt->xp_raddr), &len);
 
53
   xprt->xp_addrlen = len;
 
54
-  if (rlen == -1 && errno == EINTR)
 
55
-    goto again;
 
56
+  if (rlen == -1)
 
57
+    {
 
58
+      if (errno == EINTR)
 
59
+        goto again;
 
60
+      if (errno == EMFILE)
 
61
+        {
 
62
+          struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 };
 
63
+          __nanosleep(&ts , NULL);
 
64
+        }
 
65
+    }
 
66
   if (rlen < 16)               /* < 4 32-bit ints? */
 
67
     return FALSE;
 
68
   xdrs->x_op = XDR_DECODE;
 
69
Index: b/sunrpc/svc_unix.c
 
70
===================================================================
 
71
--- a/sunrpc/svc_unix.c
 
72
+++ b/sunrpc/svc_unix.c
 
73
@@ -46,6 +46,7 @@
 
74
 #include <errno.h>
 
75
 #include <stdlib.h>
 
76
 #include <libintl.h>
 
77
+#include <time.h>
 
78
 
 
79
 #ifdef USE_IN_LIBIO
 
80
 # include <wchar.h>
 
81
@@ -245,6 +246,11 @@ again:
 
82
     {
 
83
       if (errno == EINTR)
 
84
        goto again;
 
85
+      if (errno == EMFILE)
 
86
+        {
 
87
+          struct timespec ts = { .tv_sec = 0, .tv_nsec = 50000000 };
 
88
+          __nanosleep(&ts , NULL);
 
89
+        }
 
90
       return FALSE;
 
91
     }
 
92
   /*