This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug nss/21962] NSS lookup functions accidentally exported with non-standard ABI on i386


https://sourceware.org/bugzilla/show_bug.cgi?id=21962

--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  c88ffc239e8d8820f6d1d4e185984e6093a1e4d7 (commit)
      from  2a124c616384f140a21ee675b3e6799f8e0e7592 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c88ffc239e8d8820f6d1d4e185984e6093a1e4d7

commit c88ffc239e8d8820f6d1d4e185984e6093a1e4d7
Author: Florian Weimer <fweimer@redhat.com>
Date:   Mon Aug 14 17:12:05 2017 +0200

    NSS: Replace exported NSS lookup functions with stubs [BZ #21962]

    Commit 384ca551743318bd9c9e24a496d6397f2e3f2a49 from 2007 added this to
    nss/XXX-lookup.c:

    +#ifndef NO_COMPAT
    +int
    +internal_function attribute_compat_text_section
    +DB_COMPAT_FCT (service_user **ni, const char *fct_name, void **fctp)
    +{
    +  return DB_LOOKUP_FCT (ni, fct_name, NULL, fctp);
    +}
    +#endif

    That is, it adds a pseudo-compat function with an internal_function
    attribute.  The function it was supposed to replace did not have the
    attribute:

     extern int DB_LOOKUP_FCT (service_user **ni, const char *fct_name,
    -                     void **fctp) internal_function;
    +                     const char *fct2_name, void **fctp)
    +  internal_function;

    This changed the calling convention on i386 for the following
    functions in the public ABI:

      __nss_passwd_lookup
      __nss_group_lookup
      __nss_hosts_lookup

    This commit replaces the functions with always-failing stubs,
    with true compat symbols.  Due to a happy accident, the calling
    convention of the stub is identical for the internal_function
    and non-internal_function case on i386.

    In addition, this commit auto-generates the __nss_*_lookup2
    function declarations as part of <nsswitch.h>.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog            |   26 ++++++++++++++++++++++++++
 grp/initgroups.c     |    5 -----
 inet/ether_hton.c    |    7 +------
 inet/ether_ntoh.c    |    7 +------
 inet/getnetgrent_r.c |    6 +-----
 nss/Makefile         |    3 ++-
 nss/Versions         |    2 ++
 nss/XXX-lookup.c     |   15 ---------------
 nss/compat-lookup.c  |   42 ++++++++++++++++++++++++++++++++++++++++++
 nss/nsswitch.h       |    8 ++++++++
 nss/service-lookup.c |    1 -
 sunrpc/netname.c     |    5 +----
 sunrpc/publickey.c   |    9 ++-------
 13 files changed, 86 insertions(+), 50 deletions(-)
 create mode 100644 nss/compat-lookup.c

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]