mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 19:30:10 +00:00
nss_files: Move into libc
This is the first step towards fixing bug 27959. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
parent
36861a968a
commit
6212bb67f4
@ -798,29 +798,6 @@ for linking")
|
||||
# define libdl_hidden_data_ver(local, name)
|
||||
#endif
|
||||
|
||||
#if IS_IN (libnss_files)
|
||||
# define libnss_files_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
|
||||
# define libnss_files_hidden_tls_proto(name, attrs...) \
|
||||
hidden_tls_proto (name, ##attrs)
|
||||
# define libnss_files_hidden_def(name) hidden_def (name)
|
||||
# define libnss_files_hidden_weak(name) hidden_weak (name)
|
||||
# define libnss_files_hidden_ver(local, name) hidden_ver (local, name)
|
||||
# define libnss_files_hidden_data_def(name) hidden_data_def (name)
|
||||
# define libnss_files_hidden_tls_def(name) hidden_tls_def (name)
|
||||
# define libnss_files_hidden_data_weak(name) hidden_data_weak (name)
|
||||
# define libnss_files_hidden_data_ver(local, name) hidden_data_ver(local, name)
|
||||
#else
|
||||
# define libnss_files_hidden_proto(name, attrs...)
|
||||
# define libnss_files_hidden_tls_proto(name, attrs...)
|
||||
# define libnss_files_hidden_def(name)
|
||||
# define libnss_files_hidden_weak(name)
|
||||
# define libnss_files_hidden_ver(local, name)
|
||||
# define libnss_files_hidden_data_def(name)
|
||||
# define libnss_files_hidden_tls_def(name)
|
||||
# define libnss_files_hidden_data_weak(name)
|
||||
# define libnss_files_hidden_data_ver(local, name)
|
||||
#endif
|
||||
|
||||
#if IS_IN (libnsl)
|
||||
# define libnsl_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
|
||||
# define libnsl_hidden_tls_proto(name, attrs...) \
|
||||
|
@ -217,7 +217,7 @@ extern enum nss_status _nss_netgroup_parseline (char **cursor,
|
||||
struct __netgrent *result,
|
||||
char *buffer, size_t buflen,
|
||||
int *errnop);
|
||||
libnss_files_hidden_proto (_nss_netgroup_parseline)
|
||||
libc_hidden_proto (_nss_netgroup_parseline)
|
||||
|
||||
#define DECLARE_NSS_PROTOTYPES(service) \
|
||||
extern enum nss_status _nss_ ## service ## _setprotoent (int); \
|
||||
|
@ -124,13 +124,13 @@ extern nss_files_parse_line _nss_files_parse_servent;
|
||||
extern nss_files_parse_line _nss_files_parse_sgent;
|
||||
extern nss_files_parse_line _nss_files_parse_spent;
|
||||
|
||||
libnss_files_hidden_proto (_nss_files_parse_etherent)
|
||||
libc_hidden_proto (_nss_files_parse_etherent)
|
||||
libc_hidden_proto (_nss_files_parse_grent)
|
||||
libnss_files_hidden_proto (_nss_files_parse_netent)
|
||||
libnss_files_hidden_proto (_nss_files_parse_protoent)
|
||||
libc_hidden_proto (_nss_files_parse_netent)
|
||||
libc_hidden_proto (_nss_files_parse_protoent)
|
||||
libc_hidden_proto (_nss_files_parse_pwent)
|
||||
libnss_files_hidden_proto (_nss_files_parse_rpcent)
|
||||
libnss_files_hidden_proto (_nss_files_parse_servent)
|
||||
libc_hidden_proto (_nss_files_parse_rpcent)
|
||||
libc_hidden_proto (_nss_files_parse_servent)
|
||||
libc_hidden_proto (_nss_files_parse_sgent)
|
||||
libc_hidden_proto (_nss_files_parse_spent)
|
||||
|
||||
|
13
nss/Makefile
13
nss/Makefile
@ -98,9 +98,11 @@ subdir-dirs = $(services:%=nss_%)
|
||||
vpath %.c $(subdir-dirs) ../locale/programs ../intl
|
||||
|
||||
|
||||
libnss_files-routines := $(addprefix files-, \
|
||||
$(filter-out key, $(databases))) \
|
||||
files-initgroups files-init
|
||||
routines += \
|
||||
$(addprefix files-, $(filter-out key, $(databases))) \
|
||||
files-init \
|
||||
files-initgroups \
|
||||
# routines
|
||||
|
||||
libnss_db-dbs := $(addprefix db-,\
|
||||
$(filter-out hosts network key alias,\
|
||||
@ -116,12 +118,9 @@ libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) \
|
||||
install-others += $(inst_vardbdir)/Makefile
|
||||
|
||||
# Build static module into libc if requested
|
||||
libnss_files-inhibit-o = $(filter-out .os,$(object-suffixes))
|
||||
libnss_db-inhibit-o = $(filter-out .os,$(object-suffixes))
|
||||
libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes))
|
||||
ifeq ($(build-static-nss),yes)
|
||||
routines += $(libnss_files-routines)
|
||||
static-only-routines += $(libnss_files-routines)
|
||||
tests-static += tst-nss-static
|
||||
endif
|
||||
extra-test-objs += nss_test1.os nss_test2.os
|
||||
@ -138,8 +137,6 @@ libnss-libc = $(common-objpfx)linkobj/libc.so
|
||||
# for new links:
|
||||
$(services:%=$(objpfx)libnss_%.so): libc-for-link = $(libnss-libc)
|
||||
|
||||
$(objpfx)libnss_db.so: $(objpfx)libnss_files.so
|
||||
|
||||
$(libnss_db-dbs:%=$(objpfx)%.c): $(objpfx)db-%.c: nss_files/files-%.c
|
||||
@rm -f $@.new
|
||||
(echo '#define EXTERN_PARSER';\
|
||||
|
13
nss/Versions
13
nss/Versions
@ -23,11 +23,8 @@ libc {
|
||||
__nss_files_data_open;
|
||||
__nss_files_data_put;
|
||||
__nss_files_data_setent;
|
||||
}
|
||||
}
|
||||
|
||||
libnss_files {
|
||||
GLIBC_PRIVATE {
|
||||
# Routines formerly in libnss_files.so.2.
|
||||
_nss_files_setaliasent;
|
||||
_nss_files_endaliasent;
|
||||
_nss_files_getaliasbyname_r;
|
||||
@ -113,6 +110,14 @@ libnss_files {
|
||||
}
|
||||
}
|
||||
|
||||
libnss_files {
|
||||
GLIBC_PRIVATE {
|
||||
# Keep a version node (with a synthesized local: * directive) so that
|
||||
# __bss_* symbols are hidden on targets that need it.
|
||||
__libnss_files_version_placeholder;
|
||||
}
|
||||
}
|
||||
|
||||
libnss_db {
|
||||
GLIBC_PRIVATE {
|
||||
_nss_db_setetherent;
|
||||
|
@ -98,7 +98,7 @@ get_next_alias (FILE *stream, const char *match, struct aliasent *result,
|
||||
/* Read the first line. It must contain the alias name and
|
||||
possibly some alias names. */
|
||||
first_unused[room_left - 1] = '\xff';
|
||||
line = fgets_unlocked (first_unused, room_left, stream);
|
||||
line = __fgets_unlocked (first_unused, room_left, stream);
|
||||
if (line == NULL)
|
||||
/* Nothing to read. */
|
||||
break;
|
||||
@ -187,7 +187,7 @@ get_next_alias (FILE *stream, const char *match, struct aliasent *result,
|
||||
/* If the file does not exist we simply ignore
|
||||
the statement. */
|
||||
if (listfile != NULL
|
||||
&& (old_line = strdup (line)) != NULL)
|
||||
&& (old_line = __strdup (line)) != NULL)
|
||||
{
|
||||
while (! feof_unlocked (listfile))
|
||||
{
|
||||
@ -199,8 +199,8 @@ get_next_alias (FILE *stream, const char *match, struct aliasent *result,
|
||||
}
|
||||
|
||||
first_unused[room_left - 1] = '\xff';
|
||||
line = fgets_unlocked (first_unused, room_left,
|
||||
listfile);
|
||||
line = __fgets_unlocked (first_unused, room_left,
|
||||
listfile);
|
||||
if (line == NULL)
|
||||
break;
|
||||
if (first_unused[room_left - 1] != '\xff')
|
||||
@ -302,7 +302,7 @@ get_next_alias (FILE *stream, const char *match, struct aliasent *result,
|
||||
/* The just read character is a white space and so
|
||||
can be ignored. */
|
||||
first_unused[room_left - 1] = '\xff';
|
||||
line = fgets_unlocked (first_unused, room_left, stream);
|
||||
line = __fgets_unlocked (first_unused, room_left, stream);
|
||||
if (line == NULL)
|
||||
{
|
||||
/* Continuation line without any data and
|
||||
|
@ -57,12 +57,13 @@ LINE_PARSER
|
||||
STRING_FIELD (addr, isspace, 1);
|
||||
|
||||
/* Parse address. */
|
||||
if (inet_pton (af == AF_UNSPEC ? AF_INET : af, addr, entdata->host_addr)
|
||||
if (__inet_pton (af == AF_UNSPEC ? AF_INET : af, addr, entdata->host_addr)
|
||||
> 0)
|
||||
af = af == AF_UNSPEC ? AF_INET : af;
|
||||
else
|
||||
{
|
||||
if (af == AF_INET && inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
|
||||
if (af == AF_INET
|
||||
&& __inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
|
||||
{
|
||||
if (IN6_IS_ADDR_V4MAPPED (entdata->host_addr))
|
||||
memcpy (entdata->host_addr, entdata->host_addr + 12, INADDRSZ);
|
||||
@ -76,7 +77,7 @@ LINE_PARSER
|
||||
return 0;
|
||||
}
|
||||
else if (af == AF_UNSPEC
|
||||
&& inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
|
||||
&& __inet_pton (AF_INET6, addr, entdata->host_addr) > 0)
|
||||
af = AF_INET6;
|
||||
else
|
||||
/* Illegal address: ignore line. */
|
||||
|
@ -32,7 +32,7 @@ NSS_DECLARE_MODULE_FUNCTIONS (files)
|
||||
|
||||
#define DATAFILE "/etc/netgroup"
|
||||
|
||||
libnss_files_hidden_proto (_nss_files_endnetgrent)
|
||||
libc_hidden_proto (_nss_files_endnetgrent)
|
||||
|
||||
#define EXPAND(needed) \
|
||||
do \
|
||||
@ -164,7 +164,7 @@ _nss_files_endnetgrent (struct __netgrent *result)
|
||||
result->cursor = NULL;
|
||||
return NSS_STATUS_SUCCESS;
|
||||
}
|
||||
libnss_files_hidden_def (_nss_files_endnetgrent)
|
||||
libc_hidden_def (_nss_files_endnetgrent)
|
||||
|
||||
static char *
|
||||
strip_whitespace (char *str)
|
||||
@ -279,7 +279,7 @@ _nss_netgroup_parseline (char **cursor, struct __netgrent *result,
|
||||
|
||||
return status;
|
||||
}
|
||||
libnss_files_hidden_def (_nss_netgroup_parseline)
|
||||
libc_hidden_def (_nss_netgroup_parseline)
|
||||
|
||||
|
||||
enum nss_status
|
||||
|
@ -21,8 +21,7 @@
|
||||
#include <netdb.h>
|
||||
#include <stdint.h>
|
||||
#include <nss.h>
|
||||
|
||||
NSS_DECLARE_MODULE_FUNCTIONS (files)
|
||||
#include <nss_files.h>
|
||||
|
||||
#define ENTNAME netent
|
||||
#define DATABASE "networks"
|
||||
@ -71,7 +70,7 @@ LINE_PARSER
|
||||
*cp = '\0';
|
||||
addr = newp;
|
||||
}
|
||||
result->n_net = inet_network (addr);
|
||||
result->n_net = __inet_network (addr);
|
||||
result->n_addrtype = AF_INET;
|
||||
|
||||
})
|
||||
|
@ -74,13 +74,7 @@ struct parser_data
|
||||
/* Export the line parser function so it can be used in nss_db. */
|
||||
# define parser_stclass /* Global */
|
||||
# define parse_line CONCAT(_nss_files_parse_,ENTNAME)
|
||||
# if IS_IN (libc)
|
||||
/* We are defining one of the functions that actually lives in libc
|
||||
because it is used to implement fget*ent and suchlike. */
|
||||
# define nss_files_parse_hidden_def(name) libc_hidden_def (name)
|
||||
# else
|
||||
# define nss_files_parse_hidden_def(name) libnss_files_hidden_def (name)
|
||||
# endif
|
||||
# define nss_files_parse_hidden_def(name) libc_hidden_def (name)
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -40,7 +40,7 @@ __nss_readline (FILE *fp, char *buf, size_t len, off64_t *poffset)
|
||||
*poffset = __ftello64 (fp);
|
||||
|
||||
buf[len - 1] = '\xff'; /* Marker to recognize truncation. */
|
||||
if (fgets_unlocked (buf, len, fp) == NULL)
|
||||
if (__fgets_unlocked (buf, len, fp) == NULL)
|
||||
{
|
||||
if (feof_unlocked (fp))
|
||||
{
|
||||
@ -61,7 +61,7 @@ __nss_readline (FILE *fp, char *buf, size_t len, off64_t *poffset)
|
||||
line on the next call. */
|
||||
return __nss_readline_seek (fp, *poffset);
|
||||
|
||||
/* fgets_unlocked succeeded. */
|
||||
/* __fgets_unlocked succeeded. */
|
||||
|
||||
/* Remove leading whitespace. */
|
||||
char *p = buf;
|
||||
|
Loading…
Reference in New Issue
Block a user