patches/glibc/2.9/120-_nss_dns_gethostbyaddr2_r-check-and-adjust-the-buffer-alignment.patch
author Yann Diorcet <diorcet.yann@gmail.com>
Mon Nov 19 11:19:54 2012 +0100 (2012-11-19)
changeset 3117 2b64e1b502cd
parent 1201 c9967a6e3b25
permissions -rw-r--r--
binutils/sstrip: remove

sstrip has been obsoleted for a while now, as it's still broken
for some archs, and there seems to be no incentive to fix it
upstream. Besides, the space gained with sstrip is marginal at
best.

Signed-off-by: Yann Diorcet <diorcet.yann@gmail.com>
Message-Id: <65c8bf534d0647ce52cd.1353320545@macbook-smorlat.local>
Patchwork-Id: 199970
     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