From 54b71e02837f199b5b1eafcbb3c19b7b81df5561 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 3 May 2012 18:42:37 +0000 Subject: Fix conditions on checking versions of dprintf (bug 13775). --- libio/bits/stdio-ldbl.h | 6 ++++-- libio/bits/stdio2.h | 46 ++++++++++++++++++++++++++-------------------- 2 files changed, 30 insertions(+), 22 deletions(-) (limited to 'libio/bits') diff --git a/libio/bits/stdio-ldbl.h b/libio/bits/stdio-ldbl.h index 3cc6ec416d..4ee043e42c 100644 --- a/libio/bits/stdio-ldbl.h +++ b/libio/bits/stdio-ldbl.h @@ -87,11 +87,13 @@ __LDBL_REDIR_DECL (__fprintf_chk) __LDBL_REDIR_DECL (__printf_chk) __LDBL_REDIR_DECL (__vfprintf_chk) __LDBL_REDIR_DECL (__vprintf_chk) +# ifdef __USE_XOPEN2K8 +__LDBL_REDIR_DECL (__dprintf_chk) +__LDBL_REDIR_DECL (__vdprintf_chk) +# endif # ifdef __USE_GNU __LDBL_REDIR_DECL (__asprintf_chk) __LDBL_REDIR_DECL (__vasprintf_chk) -__LDBL_REDIR_DECL (__dprintf_chk) -__LDBL_REDIR_DECL (__vdprintf_chk) __LDBL_REDIR_DECL (__obstack_printf_chk) __LDBL_REDIR_DECL (__obstack_vprintf_chk) # endif diff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h index 2aca88d029..7383604b30 100644 --- a/libio/bits/stdio2.h +++ b/libio/bits/stdio2.h @@ -127,6 +127,32 @@ vfprintf (FILE *__restrict __stream, return __vfprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, __ap); } +# ifdef __USE_XOPEN2K8 +extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, + ...) __attribute__ ((__format__ (__printf__, 3, 4))); +extern int __vdprintf_chk (int __fd, int __flag, + const char *__restrict __fmt, _G_va_list __arg) + __attribute__ ((__format__ (__printf__, 3, 0))); + +# ifdef __va_arg_pack +__fortify_function int +dprintf (int __fd, const char *__restrict __fmt, ...) +{ + return __dprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt, + __va_arg_pack ()); +} +# elif !defined __cplusplus +# define dprintf(fd, ...) \ + __dprintf_chk (fd, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__) +# endif + +__fortify_function int +vdprintf (int __fd, const char *__restrict __fmt, _G_va_list __ap) +{ + return __vdprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt, __ap); +} +# endif + # ifdef __USE_GNU extern int __asprintf_chk (char **__restrict __ptr, int __flag, @@ -135,11 +161,6 @@ extern int __asprintf_chk (char **__restrict __ptr, int __flag, extern int __vasprintf_chk (char **__restrict __ptr, int __flag, const char *__restrict __fmt, _G_va_list __arg) __THROW __attribute__ ((__format__ (__printf__, 3, 0))) __wur; -extern int __dprintf_chk (int __fd, int __flag, const char *__restrict __fmt, - ...) __attribute__ ((__format__ (__printf__, 3, 4))); -extern int __vdprintf_chk (int __fd, int __flag, - const char *__restrict __fmt, _G_va_list __arg) - __attribute__ ((__format__ (__printf__, 3, 0))); extern int __obstack_printf_chk (struct obstack *__restrict __obstack, int __flag, const char *__restrict __format, ...) @@ -166,13 +187,6 @@ __NTH (__asprintf (char **__restrict __ptr, const char *__restrict __fmt, __va_arg_pack ()); } -__fortify_function int -dprintf (int __fd, const char *__restrict __fmt, ...) -{ - return __dprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt, - __va_arg_pack ()); -} - __fortify_function int __NTH (obstack_printf (struct obstack *__restrict __obstack, const char *__restrict __fmt, ...)) @@ -185,8 +199,6 @@ __NTH (obstack_printf (struct obstack *__restrict __obstack, __asprintf_chk (ptr, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__) # define __asprintf(ptr, ...) \ __asprintf_chk (ptr, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__) -# define dprintf(fd, ...) \ - __dprintf_chk (fd, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__) # define obstack_printf(obstack, ...) \ __obstack_printf_chk (obstack, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__) # endif @@ -198,12 +210,6 @@ __NTH (vasprintf (char **__restrict __ptr, const char *__restrict __fmt, return __vasprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt, __ap); } -__fortify_function int -vdprintf (int __fd, const char *__restrict __fmt, _G_va_list __ap) -{ - return __vdprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt, __ap); -} - __fortify_function int __NTH (obstack_vprintf (struct obstack *__restrict __obstack, const char *__restrict __fmt, _G_va_list __ap)) -- cgit v1.2.3