This is an automated email from the git hooks/post-receive script. aurel32 pushed a commit to branch jessie in repository glibc.
commit bebe45b4f0621abc70efb21d80f67add2d79a7f8 Author: Aurelien Jarno <aurel...@aurel32.net> Date: Sat Oct 15 22:26:58 2016 +0200 debian/patches/any/cvs-hesiod-resolver.diff: patch from upstream to fix a regression introduced by cvs-resolv-ipv6-nameservers.diff in hesiod. Closes: #821358. --- debian/changelog | 5 +- debian/patches/any/cvs-hesiod-resolver.diff | 420 ++++++++++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 425 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 2da64f4..d4ac3a4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,9 @@ glibc (2.19-18+deb8u7) UNRELEASED; urgency=medium - * + [ Aurelien Jarno ] + * debian/patches/any/cvs-hesiod-resolver.diff: patch from upstream to + fix a regression introduced by cvs-resolv-ipv6-nameservers.diff in + hesiod. Closes: #821358. -- Aurelien Jarno <aure...@debian.org> Sun, 04 Sep 2016 01:26:19 +0200 diff --git a/debian/patches/any/cvs-hesiod-resolver.diff b/debian/patches/any/cvs-hesiod-resolver.diff new file mode 100644 index 0000000..d47c6f9 --- /dev/null +++ b/debian/patches/any/cvs-hesiod-resolver.diff @@ -0,0 +1,420 @@ +2016-05-02 Florian Weimer <fwei...@redhat.com> + + [BZ #19573] + * hesiod/Makefile (libnss_hesiod-routines): Remove hesiod-init. + * hesiod/nss_hesiod/hesiod-init.c: Remove file. + * hesiod/nss_hesiod/nss_hesiod.h: Likewise. + * hesiod/hesiod.h (__hesiod_res_get, __hesiod_res_set): Remove. + (hesiod_init, hesiod_end, hesiod_to_bind, hesiod_resolve) + (hesiod_free_list): Mark as hidden. + * hesiod/hesiod_p (struct hesiod_p): Remove res, free_res, + res_set, res_get. + * hesiod/hesiod.c: Remove unnecessary forward declarations. + (init, __hesiod_res_get, __hesiod_res_set): Remove. + (hesiod_init): Remove obsolete res_ninit call. + (hesiod_end): Do not free resolver state. Do not invoke callback. + (hesiod_bind): Do not call init. + (get_txt_records): Use res_mkquery, res_send instead of + res_nmkquery, res_nsend. + * hesiod/nss_hesiod/hesiod-grp.c (lookup): Call hesiod_init + instead of _nss_hesiod_init. + (_nss_hesiod_initgroups_dyn): Likewise. + * hesiod/nss_hesiod/hesiod-proto.c (lookup): Likewise. + * hesiod/nss_hesiod/hesiod-pwd.c (lookup): Likewise. + * hesiod/nss_hesiod/hesiod-service.c (lookup): Likewise. + +--- a/hesiod/Makefile ++++ b/hesiod/Makefile +@@ -28,7 +28,7 @@ extra-libs-others = $(extra-libs) + subdir-dirs = nss_hesiod + vpath %.c nss_hesiod + +-libnss_hesiod-routines := hesiod hesiod-grp hesiod-init hesiod-proto \ ++libnss_hesiod-routines := hesiod hesiod-grp hesiod-proto \ + hesiod-pwd hesiod-service + # Build only shared library + libnss_hesiod-inhibit-o = $(filter-out .os,$(object-suffixes)) +--- a/hesiod/hesiod.c ++++ b/hesiod/hesiod.c +@@ -1,3 +1,20 @@ ++/* Copyright (C) 1997-2016 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ <http://www.gnu.org/licenses/>. */ ++ + #if defined(LIBC_SCCS) && !defined(lint) + static const char rcsid[] = "$BINDId: hesiod.c,v 1.21 2000/02/28 14:51:08 vixie Exp $"; + #endif +@@ -47,18 +64,9 @@ + + /* Forward */ + +-int hesiod_init(void **context); +-void hesiod_end(void *context); +-char * hesiod_to_bind(void *context, const char *name, +- const char *type); +-char ** hesiod_resolve(void *context, const char *name, +- const char *type); +-void hesiod_free_list(void *context, char **list); +- + static int parse_config_file(struct hesiod_p *ctx, const char *filename); + static char ** get_txt_records(struct hesiod_p *ctx, int class, + const char *name); +-static int init(struct hesiod_p *ctx); + + /* Public */ + +@@ -77,7 +85,6 @@ hesiod_init(void **context) { + + ctx->LHS = NULL; + ctx->RHS = NULL; +- ctx->res = NULL; + /* Set default query classes. */ + ctx->classes[0] = C_IN; + ctx->classes[1] = C_HS; +@@ -114,11 +121,6 @@ hesiod_init(void **context) { + goto cleanup; + } + +-#if 0 +- if (res_ninit(ctx->res) < 0) +- goto cleanup; +-#endif +- + *context = ctx; + return (0); + +@@ -135,12 +137,8 @@ hesiod_end(void *context) { + struct hesiod_p *ctx = (struct hesiod_p *) context; + int save_errno = errno; + +- if (ctx->res) +- res_nclose(ctx->res); + free(ctx->RHS); + free(ctx->LHS); +- if (ctx->res && ctx->free_res) +- (*ctx->free_res)(ctx->res); + free(ctx); + __set_errno(save_errno); + } +@@ -215,10 +213,6 @@ hesiod_resolve(void *context, const char *name, const char *type) { + + if (bindname == NULL) + return (NULL); +- if (init(ctx) == -1) { +- free(bindname); +- return (NULL); +- } + + retvec = get_txt_records(ctx, ctx->classes[0], bindname); + +@@ -348,13 +342,13 @@ get_txt_records(struct hesiod_p *ctx, int class, const char *name) { + /* + * Construct the query and send it. + */ +- n = res_nmkquery(ctx->res, QUERY, name, class, T_TXT, NULL, 0, ++ n = res_mkquery(QUERY, name, class, T_TXT, NULL, 0, + NULL, qbuf, MAX_HESRESP); + if (n < 0) { + __set_errno(EMSGSIZE); + return (NULL); + } +- n = res_nsend(ctx->res, qbuf, n, abuf, MAX_HESRESP); ++ n = res_send(qbuf, n, abuf, MAX_HESRESP); + if (n < 0) { + __set_errno(ECONNREFUSED); + return (NULL); +@@ -447,44 +441,3 @@ get_txt_records(struct hesiod_p *ctx, int class, const char *name) { + free(list); + return (NULL); + } +- +-struct __res_state * +-__hesiod_res_get(void *context) { +- struct hesiod_p *ctx = context; +- +- if (!ctx->res) { +- struct __res_state *res; +- res = (struct __res_state *)calloc(1, sizeof *res); +- if (res == NULL) +- return (NULL); +- __hesiod_res_set(ctx, res, free); +- } +- +- return (ctx->res); +-} +- +-void +-__hesiod_res_set(void *context, struct __res_state *res, +- void (*free_res)(void *)) { +- struct hesiod_p *ctx = context; +- +- if (ctx->res && ctx->free_res) { +- res_nclose(ctx->res); +- (*ctx->free_res)(ctx->res); +- } +- +- ctx->res = res; +- ctx->free_res = free_res; +-} +- +-static int +-init(struct hesiod_p *ctx) { +- +- if (!ctx->res && !__hesiod_res_get(ctx)) +- return (-1); +- +- if (__res_maybe_init (ctx->res, 0) == -1) +- return (-1); +- +- return (0); +-} +--- a/hesiod/hesiod.h ++++ b/hesiod/hesiod.h +@@ -1,3 +1,20 @@ ++/* Copyright (C) 1997-2016 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ <http://www.gnu.org/licenses/>. */ ++ + /* + * Copyright (c) 1996,1999 by Internet Software Consortium. + * +@@ -22,15 +39,12 @@ + #ifndef _HESIOD_H_INCLUDED + #define _HESIOD_H_INCLUDED + +-int hesiod_init (void **context); +-void hesiod_end (void *context); ++int hesiod_init (void **context) attribute_hidden; ++void hesiod_end (void *context) attribute_hidden; + char * hesiod_to_bind (void *context, const char *name, +- const char *type); ++ const char *type) attribute_hidden; + char ** hesiod_resolve (void *context, const char *name, +- const char *type); +-void hesiod_free_list (void *context, char **list); +-struct __res_state * __hesiod_res_get (void *context); +-void __hesiod_res_set (void *context, struct __res_state *, +- void (*)(void *)); ++ const char *type) attribute_hidden; ++void hesiod_free_list (void *context, char **list) attribute_hidden; + + #endif /*_HESIOD_H_INCLUDED*/ +--- a/hesiod/hesiod_p.h ++++ b/hesiod/hesiod_p.h +@@ -1,3 +1,20 @@ ++/* Copyright (C) 1997-2016 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, see ++ <http://www.gnu.org/licenses/>. */ ++ + /* + * Copyright (c) 1996,1999 by Internet Software Consortium. + * +@@ -31,11 +48,6 @@ + struct hesiod_p { + char * LHS; /* normally ".ns" */ + char * RHS; /* AKA the default hesiod domain */ +- struct __res_state * res; /* resolver context */ +- void (*free_res)(void *); +- void (*res_set)(struct hesiod_p *, struct __res_state *, +- void (*)(void *)); +- struct __res_state * (*res_get)(struct hesiod_p *); + int classes[2]; /* The class search order. */ + }; + +--- a/hesiod/nss_hesiod/hesiod-grp.c ++++ b/hesiod/nss_hesiod/hesiod-grp.c +@@ -26,8 +26,6 @@ + #include <string.h> + #include <sys/param.h> + +-#include "nss_hesiod.h" +- + /* Get the declaration of the parser function. */ + #define ENTNAME grent + #define STRUCTURE group +@@ -58,8 +56,7 @@ lookup (const char *name, const char *type, struct group *grp, + size_t len; + int olderr = errno; + +- context = _nss_hesiod_init (); +- if (context == NULL) ++ if (hesiod_init (&context) < 0) + return NSS_STATUS_UNAVAIL; + + list = hesiod_resolve (context, name, type); +@@ -179,8 +176,7 @@ _nss_hesiod_initgroups_dyn (const char *user, gid_t group, long int *start, + gid_t *groups = *groupsp; + int save_errno; + +- context = _nss_hesiod_init (); +- if (context == NULL) ++ if (hesiod_init (&context) < 0) + return NSS_STATUS_UNAVAIL; + + list = hesiod_resolve (context, user, "grplist"); +--- a/hesiod/nss_hesiod/hesiod-init.c ++++ /dev/null +@@ -1,38 +0,0 @@ +-/* Copyright (C) 2000-2014 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Mark Kettenis <kette...@phys.uva.nl>, 2000. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, see +- <http://www.gnu.org/licenses/>. */ +- +-#include <sys/cdefs.h> /* Needs to come before <hesiod.h>. */ +-#include <hesiod.h> +-#include <resolv.h> +-#include <stddef.h> +- +-#include "nss_hesiod.h" +- +-void * +-_nss_hesiod_init (void) +-{ +- void *context; +- +- if (hesiod_init (&context) == -1) +- return NULL; +- +- /* Use the default (per-thread) resolver state. */ +- __hesiod_res_set (context, &_res, NULL); +- +- return context; +-} +--- a/hesiod/nss_hesiod/hesiod-proto.c ++++ b/hesiod/nss_hesiod/hesiod-proto.c +@@ -25,8 +25,6 @@ + #include <stdlib.h> + #include <string.h> + +-#include "nss_hesiod.h" +- + /* Declare a parser for Hesiod protocol entries. Although the format + of the entries is identical to those in /etc/protocols, here is no + predefined parser for us to use. */ +@@ -68,8 +66,7 @@ lookup (const char *name, const char *type, struct protoent *proto, + int found; + int olderr = errno; + +- context = _nss_hesiod_init (); +- if (context == NULL) ++ if (hesiod_init (&context) < 0) + return NSS_STATUS_UNAVAIL; + + list = hesiod_resolve (context, name, type); +--- a/hesiod/nss_hesiod/hesiod-pwd.c ++++ b/hesiod/nss_hesiod/hesiod-pwd.c +@@ -24,8 +24,6 @@ + #include <stdlib.h> + #include <string.h> + +-#include "nss_hesiod.h" +- + /* Get the declaration of the parser function. */ + #define ENTNAME pwent + #define STRUCTURE passwd +@@ -56,8 +54,7 @@ lookup (const char *name, const char *type, struct passwd *pwd, + size_t len; + int olderr = errno; + +- context = _nss_hesiod_init (); +- if (context == NULL) ++ if (hesiod_init (&context) < 0) + return NSS_STATUS_UNAVAIL; + + list = hesiod_resolve (context, name, type); +--- a/hesiod/nss_hesiod/hesiod-service.c ++++ b/hesiod/nss_hesiod/hesiod-service.c +@@ -25,8 +25,6 @@ + #include <stdlib.h> + #include <string.h> + +-#include "nss_hesiod.h" +- + /* Hesiod uses a format for service entries that differs from the + traditional format. We therefore declare our own parser. */ + +@@ -69,8 +67,7 @@ lookup (const char *name, const char *type, const char *protocol, + int found; + int olderr = errno; + +- context = _nss_hesiod_init (); +- if (context == NULL) ++ if (hesiod_init (&context) < 0) + return NSS_STATUS_UNAVAIL; + + list = hesiod_resolve (context, name, type); +--- a/hesiod/nss_hesiod/nss_hesiod.h ++++ /dev/null +@@ -1,20 +0,0 @@ +-/* Copyright (C) 2000-2014 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Mark Kettenis <kette...@phys.uva.nl>, 2000. +- +- The GNU C Library is free software; you can redistribute it and/or +- modify it under the terms of the GNU Lesser General Public +- License as published by the Free Software Foundation; either +- version 2.1 of the License, or (at your option) any later version. +- +- The GNU C Library is distributed in the hope that it will be useful, +- but WITHOUT ANY WARRANTY; without even the implied warranty of +- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +- Lesser General Public License for more details. +- +- You should have received a copy of the GNU Lesser General Public +- License along with the GNU C Library; if not, see +- <http://www.gnu.org/licenses/>. */ +- +-/* Initialize a Hesiod context. */ +-extern void *_nss_hesiod_init (void); diff --git a/debian/patches/series b/debian/patches/series index bbd2497..746f71c 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -273,3 +273,4 @@ any/cvs-vfprintf.diff any/cvs-wscanf.diff any/cvs-ldconfig-aux-cache.diff any/cvs-grantpt-pty-owner.diff +any/cvs-hesiod-resolver.diff -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-glibc/glibc.git