This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Harden put*ent functions against data injection [BZ #18724]
- From: Joseph Myers <joseph at codesourcery dot com>
- To: Florian Weimer <fweimer at redhat dot com>
- Cc: Carlos O'Donell <carlos at redhat dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Fri, 2 Oct 2015 11:15:07 +0000
- Subject: Re: [PATCH] Harden put*ent functions against data injection [BZ #18724]
- Authentication-results: sourceware.org; auth=none
- References: <55B64BE2 dot 9060905 at redhat dot com> <55B68DBE dot 2050009 at redhat dot com> <560E5096 dot 3040306 at redhat dot com>
i386 build fixed thus. Committed.
Fix i386 build after put*ent hardening changes.
The recent put*ent hardening changes broke the build for i386. i386
defines internal_function to __attribute__ ((regparm (3), stdcall)),
which affects type compatibility, so requiring internal_function to be
used consistently on declarations and definitions. This patch adds
internal_function to the definitions of the new functions using it on
their declarations.
Tested for i386 that this fixes the build.
2015-10-02 Joseph Myers <joseph@codesourcery.com>
* nss/rewrite_field.c (__nss_rewrite_field): Use
internal_function.
* nss/valid_field.c (__nss_valid_field): Likewise.
* nss/valid_list_field.c (__nss_valid_list_field): Likewise.
diff --git a/nss/rewrite_field.c b/nss/rewrite_field.c
index fb9d274..2535457 100644
--- a/nss/rewrite_field.c
+++ b/nss/rewrite_field.c
@@ -24,6 +24,7 @@
overwritten with a pointer the caller has to free if the function
returns successfully. On failure, return NULL. */
const char *
+internal_function
__nss_rewrite_field (const char *value, char **to_be_freed)
{
*to_be_freed = NULL;
diff --git a/nss/valid_field.c b/nss/valid_field.c
index 5fcddc5..061c121 100644
--- a/nss/valid_field.c
+++ b/nss/valid_field.c
@@ -24,6 +24,7 @@ const char __nss_invalid_field_characters[] = NSS_INVALID_FIELD_CHARACTERS;
does not contain characters not permitted in NSS database
fields. */
_Bool
+internal_function
__nss_valid_field (const char *value)
{
return value == NULL
diff --git a/nss/valid_list_field.c b/nss/valid_list_field.c
index 98ab93b..80ab12b 100644
--- a/nss/valid_list_field.c
+++ b/nss/valid_list_field.c
@@ -24,6 +24,7 @@ static const char invalid_characters[] = NSS_INVALID_FIELD_CHARACTERS ",";
/* Check that all list members match the field syntax requirements and
do not contain the character ','. */
_Bool
+internal_function
__nss_valid_list_field (char **list)
{
if (list == NULL)
--
Joseph S. Myers
joseph@codesourcery.com