86f0ee9140
Fixes CVE-2016-6323
150 lines
4.4 KiB
Diff
150 lines
4.4 KiB
Diff
From 58ef663c94e0bf21e88af6afce13b62d723cc415 Mon Sep 17 00:00:00 2001
|
||
From: Florian Weimer <fweimer@redhat.com>
|
||
Date: Thu, 18 Aug 2016 11:15:42 +0200
|
||
Subject: [PATCH 10] argp: Do not override GCC keywords with macros [BZ
|
||
#16907]
|
||
|
||
glibc provides fallback definitions already. It is not necessary to
|
||
suppress warnings for unknown attributes because GCC does this
|
||
automatically for system headers.
|
||
|
||
This commit does not sync with gnulib because gnulib has started to use
|
||
_GL_* macros in the header file, which are arguably in the gnulib
|
||
implementation space and not suitable for an installed glibc header
|
||
file.
|
||
|
||
(cherry picked from commit 2c820533c61fed175390bc6058afbbe42d2edc37)
|
||
---
|
||
ChangeLog | 8 ++++++++
|
||
argp/argp-fmtstream.h | 19 ++++---------------
|
||
argp/argp.h | 42 ++----------------------------------------
|
||
3 files changed, 14 insertions(+), 55 deletions(-)
|
||
|
||
diff --git a/ChangeLog b/ChangeLog
|
||
index 734e34b..1351bfd 100644
|
||
--- a/ChangeLog
|
||
+++ b/ChangeLog
|
||
@@ -1,3 +1,11 @@
|
||
+2016-08-18 Florian Weimer <fweimer@redhat.com>
|
||
+
|
||
+ [BZ #16907]
|
||
+ * argp/argp.h: Switch to __BEGIN_DECLS and __END_DECLS.
|
||
+ (__THROW, __NTH, __attribute__, __restrict): Remove definitions.
|
||
+ * argp/argp-fmtstream.h: Add __BEGIN_DECLS and __END_DECLS.
|
||
+ (__attribute__): Remove definition.
|
||
+
|
||
2016-08-15 Andreas Schwab <schwab@suse.de>
|
||
|
||
[BZ #20435]
|
||
diff --git a/argp/argp-fmtstream.h b/argp/argp-fmtstream.h
|
||
index bdeaa54..e8c5797 100644
|
||
--- a/argp/argp-fmtstream.h
|
||
+++ b/argp/argp-fmtstream.h
|
||
@@ -29,21 +29,6 @@
|
||
#include <string.h>
|
||
#include <unistd.h>
|
||
|
||
-#ifndef __attribute__
|
||
-/* This feature is available in gcc versions 2.5 and later. */
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || \
|
||
- defined __STRICT_ANSI__
|
||
-# define __attribute__(Spec) /* empty */
|
||
-# endif
|
||
-/* The __-protected variants of `format' and `printf' attributes
|
||
- are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || \
|
||
- defined __STRICT_ANSI__
|
||
-# define __format__ format
|
||
-# define __printf__ printf
|
||
-# endif
|
||
-#endif
|
||
-
|
||
#if defined (__GNU_LIBRARY__) && defined (HAVE_LINEWRAP_H)
|
||
/* line_wrap_stream is available, so use that. */
|
||
#define ARGP_FMTSTREAM_USE_LINEWRAP
|
||
@@ -111,6 +96,8 @@ struct argp_fmtstream
|
||
|
||
typedef struct argp_fmtstream *argp_fmtstream_t;
|
||
|
||
+__BEGIN_DECLS
|
||
+
|
||
/* Return an argp_fmtstream that outputs to STREAM, and which prefixes lines
|
||
written on it with LMARGIN spaces and limits them to RMARGIN columns
|
||
total. If WMARGIN >= 0, words that extend past RMARGIN are wrapped by
|
||
@@ -297,6 +284,8 @@ __argp_fmtstream_point (argp_fmtstream_t __fs)
|
||
|
||
#endif /* __OPTIMIZE__ */
|
||
|
||
+__END_DECLS
|
||
+
|
||
#endif /* ARGP_FMTSTREAM_USE_LINEWRAP */
|
||
|
||
#endif /* argp-fmtstream.h */
|
||
diff --git a/argp/argp.h b/argp/argp.h
|
||
index e67bbef..7cb5a69 100644
|
||
--- a/argp/argp.h
|
||
+++ b/argp/argp.h
|
||
@@ -28,48 +28,12 @@
|
||
#define __need_error_t
|
||
#include <errno.h>
|
||
|
||
-#ifndef __THROW
|
||
-# define __THROW
|
||
-#endif
|
||
-#ifndef __NTH
|
||
-# define __NTH(fct) fct __THROW
|
||
-#endif
|
||
-
|
||
-#ifndef __attribute__
|
||
-/* This feature is available in gcc versions 2.5 and later. */
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || \
|
||
- defined __STRICT_ANSI__
|
||
-# define __attribute__(Spec) /* empty */
|
||
-# endif
|
||
-/* The __-protected variants of `format' and `printf' attributes
|
||
- are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
|
||
-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || \
|
||
- defined __STRICT_ANSI__
|
||
-# define __format__ format
|
||
-# define __printf__ printf
|
||
-# endif
|
||
-#endif
|
||
-
|
||
-/* GCC 2.95 and later have "__restrict"; C99 compilers have
|
||
- "restrict", and "configure" may have defined "restrict". */
|
||
-#ifndef __restrict
|
||
-# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__))
|
||
-# if defined restrict || 199901L <= __STDC_VERSION__
|
||
-# define __restrict restrict
|
||
-# else
|
||
-# define __restrict
|
||
-# endif
|
||
-# endif
|
||
-#endif
|
||
-
|
||
#ifndef __error_t_defined
|
||
typedef int error_t;
|
||
# define __error_t_defined
|
||
#endif
|
||
|
||
-#ifdef __cplusplus
|
||
-extern "C" {
|
||
-#endif
|
||
+__BEGIN_DECLS
|
||
|
||
/* A description of a particular option. A pointer to an array of
|
||
these is passed in the OPTIONS field of an argp structure. Each option
|
||
@@ -590,8 +554,6 @@ __NTH (__option_is_end (const struct argp_option *__opt))
|
||
# endif
|
||
#endif /* Use extern inlines. */
|
||
|
||
-#ifdef __cplusplus
|
||
-}
|
||
-#endif
|
||
+__END_DECLS
|
||
|
||
#endif /* argp.h */
|
||
--
|
||
2.7.4.GIT
|
||
|
||
|