The Samba-Bugzilla – Attachment 8195 Details for
Bug 9390
Solaris printf doesn't allow %s, NULL
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for v4-0-test
tmp40.diff (text/plain), 4.33 KB, created by
Stefan Metzmacher
on 2012-11-15 08:10:02 UTC
(
hide
)
Description:
Patch for v4-0-test
Filename:
MIME Type:
Creator:
Stefan Metzmacher
Created:
2012-11-15 08:10:02 UTC
Size:
4.33 KB
patch
obsolete
>From 05b1a995293d9053078ba51cb130baadb11c539f Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >Date: Tue, 13 Nov 2012 14:07:11 +0100 >Subject: [PATCH] lib/replace: replace all *printf function if we replace > snprintf (bug #9390) >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >This fixes segfaults in log level = 10 on Solaris. > >Signed-off-by: Stefan Metzmacher <metze@samba.org> >Signed-off-by: Björn Jacke <bj@sernet.de> > >Autobuild-User(master): Björn Jacke <bj@sernet.de> >Autobuild-Date(master): Wed Nov 14 19:41:14 CET 2012 on sn-devel-104 >(cherry picked from commit a15da3625850d97b3da1b02308c870f820007c52) >--- > lib/replace/replace.c | 4 ++-- > lib/replace/replace.h | 42 ++++++++++++++++++++++++++++++------------ > lib/replace/snprintf.c | 5 ++--- > 3 files changed, 34 insertions(+), 17 deletions(-) > >diff --git a/lib/replace/replace.c b/lib/replace/replace.c >index e461471..7ee5f4b 100644 >--- a/lib/replace/replace.c >+++ b/lib/replace/replace.c >@@ -741,7 +741,7 @@ void *rep_memmem(const void *haystack, size_t haystacklen, > } > #endif > >-#ifndef HAVE_VDPRINTF >+#if !defined(HAVE_VDPRINTF) || !defined(HAVE_C99_VSNPRINTF) > int rep_vdprintf(int fd, const char *format, va_list ap) > { > char *s = NULL; >@@ -758,7 +758,7 @@ int rep_vdprintf(int fd, const char *format, va_list ap) > } > #endif > >-#ifndef HAVE_DPRINTF >+#if !defined(HAVE_DPRINTF) || !defined(HAVE_C99_VSNPRINTF) > int rep_dprintf(int fd, const char *format, ...) > { > int ret; >diff --git a/lib/replace/replace.h b/lib/replace/replace.h >index bbea0fc..cb412c2 100644 >--- a/lib/replace/replace.h >+++ b/lib/replace/replace.h >@@ -376,16 +376,6 @@ int rep_dlclose(void *handle); > /* prototype is in system/network.h */ > #endif > >-#ifndef HAVE_VDPRINTF >-#define vdprintf rep_vdprintf >-int rep_vdprintf(int fd, const char *format, va_list ap); >-#endif >- >-#ifndef HAVE_DPRINTF >-#define dprintf rep_dprintf >-int rep_dprintf(int fd, const char *format, ...); >-#endif >- > #ifndef PRINTF_ATTRIBUTE > #if (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 1 ) > /** Use gcc attribute to check printf fns. a1 is the 1-based index of >@@ -406,7 +396,17 @@ int rep_dprintf(int fd, const char *format, ...); > #endif > #endif > >-#ifndef HAVE_VASPRINTF >+#if !defined(HAVE_VDPRINTF) || !defined(HAVE_C99_VSNPRINTF) >+#define vdprintf rep_vdprintf >+int rep_vdprintf(int fd, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0); >+#endif >+ >+#if !defined(HAVE_DPRINTF) || !defined(HAVE_C99_VSNPRINTF) >+#define dprintf rep_dprintf >+int rep_dprintf(int fd, const char *format, ...) PRINTF_ATTRIBUTE(2,3); >+#endif >+ >+#if !defined(HAVE_VASPRINTF) || !defined(HAVE_C99_VSNPRINTF) > #define vasprintf rep_vasprintf > int rep_vasprintf(char **ptr, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0); > #endif >@@ -421,11 +421,29 @@ int rep_snprintf(char *,size_t ,const char *, ...) PRINTF_ATTRIBUTE(3,4); > int rep_vsnprintf(char *,size_t ,const char *, va_list ap) PRINTF_ATTRIBUTE(3,0); > #endif > >-#ifndef HAVE_ASPRINTF >+#if !defined(HAVE_ASPRINTF) || !defined(HAVE_C99_VSNPRINTF) > #define asprintf rep_asprintf > int rep_asprintf(char **,const char *, ...) PRINTF_ATTRIBUTE(2,3); > #endif > >+#if !defined(HAVE_C99_VSNPRINTF) >+#ifdef REPLACE_BROKEN_PRINTF >+/* >+ * We do not redefine printf by default >+ * as it breaks the build if system headers >+ * use __attribute__((format(printf, 3, 0))) >+ * instead of __attribute__((format(__printf__, 3, 0))) >+ */ >+#define printf rep_printf >+#endif >+int rep_printf(const char *, ...) PRINTF_ATTRIBUTE(1,2); >+#endif >+ >+#if !defined(HAVE_C99_VSNPRINTF) >+#define fprintf rep_fprintf >+int rep_fprintf(FILE *stream, const char *, ...) PRINTF_ATTRIBUTE(2,3); >+#endif >+ > #ifndef HAVE_VSYSLOG > #ifdef HAVE_SYSLOG > #define vsyslog rep_vsyslog >diff --git a/lib/replace/snprintf.c b/lib/replace/snprintf.c >index 877d2a1..6b4a711 100644 >--- a/lib/replace/snprintf.c >+++ b/lib/replace/snprintf.c >@@ -1256,7 +1256,7 @@ static int add_cnk_list_entry(struct pr_chunk_x **list, > > #endif > >-#ifndef HAVE_VASPRINTF >+#if !defined(HAVE_VASPRINTF) || !defined(HAVE_C99_VSNPRINTF) > int rep_vasprintf(char **ptr, const char *format, va_list ap) > { > int ret; >@@ -1278,8 +1278,7 @@ static int add_cnk_list_entry(struct pr_chunk_x **list, > } > #endif > >- >-#ifndef HAVE_ASPRINTF >+#if !defined(HAVE_ASPRINTF) || !defined(HAVE_C99_VSNPRINTF) > int rep_asprintf(char **ptr, const char *format, ...) > { > va_list ap; >-- >1.7.9.5 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
bjacke
:
review+
Actions:
View
Attachments on
bug 9390
: 8195 |
8197
|
8198