patches/glibc/2.9/120-_nss_dns_gethostbyaddr2_r-check-and-adjust-the-buffer-alignment.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Wed Dec 05 20:31:43 2012 +0100 (2012-12-05)
changeset 3134 863723936e24
parent 1201 c9967a6e3b25
permissions -rw-r--r--
scripts/xldd: use user's sed and grep

xldd uses sed and grep as detected by ./configure. This works well if is
used on the machine that build the toolchain.

But if the user moves the toolchain to another machine where sed and grep
are not in the same directory (eg. /bin/sed vs. /usr/bin/sed), then xldd
will stop functionning.

Fix that by using ${SED} and ${GREP} if they are set in the environment.

Reported-by: Samuel Martin <s.martin49@gmail.com>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
     1 Original patch from: gentoo/src/patchsets/glibc/2.9/0050_all_glibc-_nss_dns_gethostbyaddr2_r-check-and-adjust-the-buffer-alignment.patch
     2 
     3 -= BEGIN original header =-
     4 http://sourceware.org/ml/libc-alpha/2009-01/msg00000.html
     5 
     6 From 8ad7030880eaa18dcabf8e284e79026301fd3fa4 Mon Sep 17 00:00:00 2001
     7 From: Ulrich Drepper <drepper@redhat.com>
     8 Date: Thu, 8 Jan 2009 00:02:38 +0000
     9 Subject: [PATCH] (_nss_dns_gethostbyaddr2_r): Check and adjust the buffer alignment.
    10 
    11 -= END original header =-
    12 
    13 diff -durN glibc-2_9.orig/resolv/nss_dns/dns-host.c glibc-2_9/resolv/nss_dns/dns-host.c
    14 --- glibc-2_9.orig/resolv/nss_dns/dns-host.c	2008-11-12 08:52:20.000000000 +0100
    15 +++ glibc-2_9/resolv/nss_dns/dns-host.c	2009-02-02 22:00:36.000000000 +0100
    16 @@ -364,6 +364,19 @@
    17    int n, status;
    18    int olderr = errno;
    19  
    20 + uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data);
    21 + buffer += pad;
    22 + buflen = buflen > pad ? buflen - pad : 0;
    23 +
    24 + if (__builtin_expect (buflen < sizeof (struct host_data), 0))
    25 +   {
    26 +     *errnop = ERANGE;
    27 +     *h_errnop = NETDB_INTERNAL;
    28 +     return NSS_STATUS_TRYAGAIN;
    29 +   }
    30 +
    31 + host_data = (struct host_data *) buffer;
    32 +
    33    if (__res_maybe_init (&_res, 0) == -1)
    34      return NSS_STATUS_UNAVAIL;
    35