mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-15 13:43:40 +08:00
Update to FreeBSD stable/12 2019-09-23
Git mirror commit 7e8d1444023128d34fb9aa4e4515928a4f794d1b.
This commit is contained in:
@@ -686,7 +686,7 @@ ns_name_skip(const u_char **ptrptr, const u_char *eom)
|
||||
{
|
||||
const u_char *cp;
|
||||
u_int n;
|
||||
int l;
|
||||
int l = 0;
|
||||
|
||||
cp = *ptrptr;
|
||||
while (cp < eom && (n = *cp++) != 0) {
|
||||
@@ -696,7 +696,7 @@ ns_name_skip(const u_char **ptrptr, const u_char *eom)
|
||||
cp += n;
|
||||
continue;
|
||||
case NS_TYPE_ELT: /*%< EDNS0 extended label */
|
||||
if ((l = labellen(cp - 1)) < 0) {
|
||||
if (cp < eom && (l = labellen(cp - 1)) < 0) {
|
||||
errno = EMSGSIZE; /*%< XXX */
|
||||
return (-1);
|
||||
}
|
||||
|
@@ -60,7 +60,7 @@ _gethostbynis(const char *name, char *map, int af, struct hostent *he,
|
||||
char *cp, **q;
|
||||
char *result;
|
||||
int resultlen, size, addrok = 0;
|
||||
char ypbuf[YPMAXRECORD + 2];
|
||||
char *ypbuf;
|
||||
res_state statp;
|
||||
|
||||
statp = __res_state();
|
||||
@@ -90,10 +90,11 @@ _gethostbynis(const char *name, char *map, int af, struct hostent *he,
|
||||
}
|
||||
|
||||
/* avoid potential memory leak */
|
||||
bcopy((char *)result, (char *)&ypbuf, resultlen);
|
||||
ypbuf = alloca(resultlen + 2);
|
||||
bcopy(result, ypbuf, resultlen);
|
||||
ypbuf[resultlen] = '\0';
|
||||
free(result);
|
||||
result = (char *)&ypbuf;
|
||||
result = ypbuf;
|
||||
|
||||
if ((cp = strchr(result, '\n')))
|
||||
*cp = '\0';
|
||||
|
@@ -60,7 +60,7 @@ _getnetbynis(const char *name, char *map, int af, struct netent *ne,
|
||||
char *cp, **q;
|
||||
char *result;
|
||||
int resultlen, len;
|
||||
char ypbuf[YPMAXRECORD + 2];
|
||||
char *ypbuf;
|
||||
|
||||
switch(af) {
|
||||
case AF_INET:
|
||||
@@ -79,10 +79,11 @@ _getnetbynis(const char *name, char *map, int af, struct netent *ne,
|
||||
&resultlen))
|
||||
return (-1);
|
||||
|
||||
bcopy((char *)result, (char *)&ypbuf, resultlen);
|
||||
ypbuf = alloca(resultlen + 2);
|
||||
bcopy(result, ypbuf, resultlen);
|
||||
ypbuf[resultlen] = '\0';
|
||||
free(result);
|
||||
result = (char *)&ypbuf;
|
||||
result = ypbuf;
|
||||
|
||||
if ((cp = strchr(result, '\n')))
|
||||
*cp = '\0';
|
||||
|
@@ -666,7 +666,7 @@ nis_servent(void *retval, void *mdata, va_list ap)
|
||||
{
|
||||
char *resultbuf, *lastkey;
|
||||
int resultbuflen;
|
||||
char buf[YPMAXRECORD + 2];
|
||||
char *buf;
|
||||
|
||||
struct nis_state *st;
|
||||
int rv;
|
||||
@@ -683,6 +683,7 @@ nis_servent(void *retval, void *mdata, va_list ap)
|
||||
|
||||
name = NULL;
|
||||
proto = NULL;
|
||||
buf = NULL;
|
||||
how = (enum nss_lookup_type)mdata;
|
||||
switch (how) {
|
||||
case nss_lt_name:
|
||||
@@ -718,7 +719,10 @@ nis_servent(void *retval, void *mdata, va_list ap)
|
||||
do {
|
||||
switch (how) {
|
||||
case nss_lt_name:
|
||||
snprintf(buf, sizeof(buf), "%s/%s", name, proto);
|
||||
free(buf);
|
||||
asprintf(&buf, "%s/%s", name, proto);
|
||||
if (buf == NULL)
|
||||
return (NS_TRYAGAIN);
|
||||
if (yp_match(st->yp_domain, "services.byname", buf,
|
||||
strlen(buf), &resultbuf, &resultbuflen)) {
|
||||
rv = NS_NOTFOUND;
|
||||
@@ -726,8 +730,10 @@ nis_servent(void *retval, void *mdata, va_list ap)
|
||||
}
|
||||
break;
|
||||
case nss_lt_id:
|
||||
snprintf(buf, sizeof(buf), "%d/%s", ntohs(port),
|
||||
proto);
|
||||
free(buf);
|
||||
asprintf(&buf, "%d/%s", ntohs(port), proto);
|
||||
if (buf == NULL)
|
||||
return (NS_TRYAGAIN);
|
||||
|
||||
/*
|
||||
* We have to be a little flexible
|
||||
@@ -793,6 +799,7 @@ nis_servent(void *retval, void *mdata, va_list ap)
|
||||
} while (!(rv & NS_TERMINATE) && how == nss_lt_all);
|
||||
|
||||
fin:
|
||||
free(buf);
|
||||
if (rv == NS_SUCCESS && retval != NULL)
|
||||
*(struct servent **)retval = serv;
|
||||
|
||||
|
@@ -402,7 +402,7 @@ nis_rpcent(void *retval, void *mdata, va_list ap)
|
||||
char *lastkey;
|
||||
char *resultbuf;
|
||||
int resultbuflen;
|
||||
char buf[YPMAXRECORD + 2];
|
||||
char *buf;
|
||||
|
||||
struct nis_state *st;
|
||||
int rv;
|
||||
@@ -424,6 +424,7 @@ nis_rpcent(void *retval, void *mdata, va_list ap)
|
||||
return (NS_NOTFOUND);
|
||||
}
|
||||
|
||||
buf = NULL;
|
||||
rpc = va_arg(ap, struct rpcent *);
|
||||
buffer = va_arg(ap, char *);
|
||||
bufsize = va_arg(ap, size_t);
|
||||
@@ -447,7 +448,10 @@ nis_rpcent(void *retval, void *mdata, va_list ap)
|
||||
case nss_lt_name:
|
||||
if (!st->no_name_map)
|
||||
{
|
||||
snprintf(buf, sizeof buf, "%s", name);
|
||||
free(buf);
|
||||
asprintf(&buf, "%s", name);
|
||||
if (buf == NULL)
|
||||
return (NS_TRYAGAIN);
|
||||
rv = yp_match(st->domain, "rpc.byname", buf,
|
||||
strlen(buf), &resultbuf, &resultbuflen);
|
||||
|
||||
@@ -475,7 +479,10 @@ nis_rpcent(void *retval, void *mdata, va_list ap)
|
||||
}
|
||||
break;
|
||||
case nss_lt_id:
|
||||
snprintf(buf, sizeof buf, "%d", number);
|
||||
free(buf);
|
||||
asprintf(&buf, "%d", number);
|
||||
if (buf == NULL)
|
||||
return (NS_TRYAGAIN);
|
||||
if (yp_match(st->domain, "rpc.bynumber", buf,
|
||||
strlen(buf), &resultbuf, &resultbuflen)) {
|
||||
rv = NS_NOTFOUND;
|
||||
@@ -562,6 +569,7 @@ done:
|
||||
} while (!(rv & NS_TERMINATE) && (how == nss_lt_all));
|
||||
|
||||
fin:
|
||||
free(buf);
|
||||
if ((rv == NS_SUCCESS) && (retval != NULL))
|
||||
*((struct rpcent **)retval) = rpc;
|
||||
|
||||
|
Reference in New Issue
Block a user