Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-7-0]: src Pull up following revision(s) (requested by christos in...
details: https://anonhg.NetBSD.org/src/rev/3f6b45e9f97d
branches: netbsd-7-0
changeset: 801070:3f6b45e9f97d
user: riz <riz%NetBSD.org@localhost>
date: Sun Nov 08 00:35:21 2015 +0000
description:
Pull up following revision(s) (requested by christos in ticket #1012):
lib/libc/net/getnetnamadr.c: revision 1.43
lib/libc/net/getnetnamadr.c: revision 1.44
external/gpl3/binutils/dist/binutils/arsup.c: revision 1.2
put the state back after it is used.
PR/50367: Stefan Schaeckeler: Apply fix to obey RES_CHECKNAME to getnetbyaddr
and getnetbyname.
use asprintf(3)
diffstat:
external/gpl3/binutils/dist/binutils/arsup.c | 11 +++++++++--
lib/libc/net/getnetnamadr.c | 23 +++++++++++++++--------
2 files changed, 24 insertions(+), 10 deletions(-)
diffs (121 lines):
diff -r 6f70584b74c5 -r 3f6b45e9f97d external/gpl3/binutils/dist/binutils/arsup.c
--- a/external/gpl3/binutils/dist/binutils/arsup.c Sun Nov 08 00:31:15 2015 +0000
+++ b/external/gpl3/binutils/dist/binutils/arsup.c Sun Nov 08 00:35:21 2015 +0000
@@ -149,13 +149,20 @@
void
ar_open (char *name, int t)
{
- char *tname = (char *) xmalloc (strlen (name) + 10);
+ char *tname;
const char *bname = lbasename (name);
real_name = name;
/* Prepend tmp- to the beginning, to avoid file-name clashes after
truncation on filesystems with limited namespaces (DOS). */
- sprintf (tname, "%.*stmp-%s", (int) (bname - name), name, bname);
+ if (asprintf (&tname, "%.*stmp-%s", (int) (bname - name), name, bname) == -1)
+ {
+ fprintf (stderr, _("%s: Can't allocate memory for temp name (%s)\n"),
+ program_name, strerror(errno));
+ maybequit ();
+ return;
+ }
+
obfd = bfd_openw (tname, NULL);
if (!obfd)
diff -r 6f70584b74c5 -r 3f6b45e9f97d lib/libc/net/getnetnamadr.c
--- a/lib/libc/net/getnetnamadr.c Sun Nov 08 00:31:15 2015 +0000
+++ b/lib/libc/net/getnetnamadr.c Sun Nov 08 00:35:21 2015 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: getnetnamadr.c,v 1.42 2012/03/13 21:13:41 christos Exp $ */
+/* $NetBSD: getnetnamadr.c,v 1.42.12.1 2015/11/08 00:35:21 riz Exp $ */
/* Copyright (c) 1993 Carlos Leandro and Rui Salgueiro
* Dep. Matematica Universidade de Coimbra, Portugal, Europe
@@ -43,7 +43,7 @@
static char sccsid_[] = "from getnetnamadr.c 1.4 (Coimbra) 93/06/03";
static char rcsid[] = "Id: getnetnamadr.c,v 8.8 1997/06/01 20:34:37 vixie Exp ";
#else
-__RCSID("$NetBSD: getnetnamadr.c,v 1.42 2012/03/13 21:13:41 christos Exp $");
+__RCSID("$NetBSD: getnetnamadr.c,v 1.42.12.1 2015/11/08 00:35:21 riz Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -77,6 +77,12 @@
__weak_alias(getnetbyname,_getnetbyname)
#endif
+#define maybe_ok(res, nm, ok) (((res)->options & RES_NOCHECKNAME) != 0U || \
+ (ok)(nm) != 0)
+#define maybe_hnok(res, hn) maybe_ok((res), (hn), res_hnok)
+#define maybe_dnok(res, dn) maybe_ok((res), (dn), res_dnok)
+
+
extern int _net_stayopen;
#define BYADDR 0
@@ -105,7 +111,7 @@
static char *net_aliases[MAXALIASES];
static int parse_reversed_addr(const char *, in_addr_t *);
-static struct netent *getnetanswer(querybuf *, int, int);
+static struct netent *getnetanswer(res_state, querybuf *, int, int);
static int _files_getnetbyaddr(void *, void *, va_list);
static int _files_getnetbyname(void *, void *, va_list);
static int _dns_getnetbyaddr(void *, void *, va_list);
@@ -159,7 +165,7 @@
}
static struct netent *
-getnetanswer(querybuf *answer, int anslen, int net_i)
+getnetanswer(res_state res, querybuf *answer, int anslen, int net_i)
{
static char n_name[MAXDNAME];
static char netbuf[PACKETSZ];
@@ -172,6 +178,7 @@
char *in, *bp, **ap, *ep;
_DIAGASSERT(answer != NULL);
+ _DIAGASSERT(res != NULL);
/*
* find first satisfactory answer
@@ -216,7 +223,7 @@
n_name[0] = '\0';
while (--ancount >= 0 && cp < eom) {
n = dn_expand(answer->buf, eom, cp, bp, (int)(ep - bp));
- if ((n < 0) || !res_dnok(bp))
+ if ((n < 0) || !maybe_dnok(res, bp))
break;
cp += n;
(void)strlcpy(n_name, bp, sizeof(n_name));
@@ -226,7 +233,7 @@
GETSHORT(n, cp);
if (class == C_IN && type == T_PTR) {
n = dn_expand(answer->buf, eom, cp, bp, (int)(ep - bp));
- if ((n < 0) || !res_hnok(bp)) {
+ if ((n < 0) || !maybe_hnok(res, bp)) {
cp += n;
return NULL;
}
@@ -358,8 +365,8 @@
__res_put_state(res);
return NS_NOTFOUND;
}
+ np = getnetanswer(res, buf, anslen, BYADDR);
__res_put_state(res);
- np = getnetanswer(buf, anslen, BYADDR);
free(buf);
if (np) {
/* maybe net should be unsigned? */
@@ -470,8 +477,8 @@
__res_put_state(res);
return NS_NOTFOUND;
}
+ np = getnetanswer(res, buf, anslen, BYNAME);
__res_put_state(res);
- np = getnetanswer(buf, anslen, BYNAME);
free(buf);
if (np != NULL) {
Home |
Main Index |
Thread Index |
Old Index