mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-22 10:48:02 +00:00
Treat '+' as special only when in compat mode, and simplify
the logic bit. MFC after: 2 weeks
This commit is contained in:
parent
8390eaedcc
commit
aea86367e8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=206153
|
@ -315,28 +315,8 @@ files_servent(void *retval, void *mdata, va_list ap)
|
|||
break;
|
||||
}
|
||||
|
||||
if (*line=='+') {
|
||||
if (serv_mdata->compat_mode != 0)
|
||||
st->compat_mode_active = 1;
|
||||
} else {
|
||||
if (bufsize <= linesize + _ALIGNBYTES +
|
||||
sizeof(char *)) {
|
||||
*errnop = ERANGE;
|
||||
rv = NS_RETURN;
|
||||
break;
|
||||
}
|
||||
aliases = (char **)_ALIGN(&buffer[linesize+1]);
|
||||
aliases_size = (buffer + bufsize -
|
||||
(char *)aliases) / sizeof(char *);
|
||||
if (aliases_size < 1) {
|
||||
*errnop = ERANGE;
|
||||
rv = NS_RETURN;
|
||||
break;
|
||||
}
|
||||
|
||||
memcpy(buffer, line, linesize);
|
||||
buffer[linesize] = '\0';
|
||||
}
|
||||
if (*line=='+' && serv_mdata->compat_mode != 0)
|
||||
st->compat_mode_active = 1;
|
||||
}
|
||||
|
||||
if (st->compat_mode_active != 0) {
|
||||
|
@ -367,6 +347,23 @@ files_servent(void *retval, void *mdata, va_list ap)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (bufsize <= linesize + _ALIGNBYTES + sizeof(char *)) {
|
||||
*errnop = ERANGE;
|
||||
rv = NS_RETURN;
|
||||
break;
|
||||
}
|
||||
aliases = (char **)_ALIGN(&buffer[linesize + 1]);
|
||||
aliases_size = (buffer + bufsize -
|
||||
(char *)aliases) / sizeof(char *);
|
||||
if (aliases_size < 1) {
|
||||
*errnop = ERANGE;
|
||||
rv = NS_RETURN;
|
||||
break;
|
||||
}
|
||||
|
||||
memcpy(buffer, line, linesize);
|
||||
buffer[linesize] = '\0';
|
||||
|
||||
rv = servent_unpack(buffer, serv, aliases, aliases_size,
|
||||
errnop);
|
||||
if (rv !=0 ) {
|
||||
|
|
Loading…
Reference in a new issue