summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan2006-11-28 01:12:34 +0000
committerAndrew Dunstan2006-11-28 01:12:34 +0000
commit796a3f373a6a19695f4d423beb38ace373874599 (patch)
treed9a25d83528c560441b50bf6985adac757430a79
parentc15de02f6193edf6a1f014efbe88c4ce47c64201 (diff)
protect vfprintf from hijacking by Windows gettext just like other members of the *printf family.
-rw-r--r--src/include/port.h8
-rw-r--r--src/port/snprintf.c5
2 files changed, 10 insertions, 3 deletions
diff --git a/src/include/port.h b/src/include/port.h
index 21c8b92643..59a15c103c 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/port.h,v 1.105 2006/10/19 20:56:22 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/port.h,v 1.106 2006/11/28 01:12:33 adunstan Exp $
*
*-------------------------------------------------------------------------
*/
@@ -145,6 +145,9 @@ extern unsigned char pg_tolower(unsigned char ch);
#ifdef sprintf
#undef sprintf
#endif
+#ifdef vfprintf
+#undef vfprintf
+#endif
#ifdef fprintf
#undef fprintf
#endif
@@ -161,6 +164,7 @@ extern int
pg_sprintf(char *str, const char *fmt,...)
/* This extension allows gcc to check the format string */
__attribute__((format(printf, 2, 3)));
+extern int pg_vfprintf(FILE * stream, const char *fmt, va_list args);
extern int
pg_fprintf(FILE *stream, const char *fmt,...)
/* This extension allows gcc to check the format string */
@@ -179,12 +183,14 @@ __attribute__((format(printf, 1, 2)));
#define vsnprintf(...) pg_vsnprintf(__VA_ARGS__)
#define snprintf(...) pg_snprintf(__VA_ARGS__)
#define sprintf(...) pg_sprintf(__VA_ARGS__)
+#define vfprintf(...) pg_vfprintf(__VA_ARGS__)
#define fprintf(...) pg_fprintf(__VA_ARGS__)
#define printf(...) pg_printf(__VA_ARGS__)
#else
#define vsnprintf pg_vsnprintf
#define snprintf pg_snprintf
#define sprintf pg_sprintf
+#define vfprintf pg_vfprintf
#define fprintf pg_fprintf
#define printf pg_printf
#endif
diff --git a/src/port/snprintf.c b/src/port/snprintf.c
index e4472e5bdb..d588ac3bc5 100644
--- a/src/port/snprintf.c
+++ b/src/port/snprintf.c
@@ -31,7 +31,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $PostgreSQL: pgsql/src/port/snprintf.c,v 1.32 2006/10/04 00:30:14 momjian Exp $
+ * $PostgreSQL: pgsql/src/port/snprintf.c,v 1.33 2006/11/28 01:12:34 adunstan Exp $
*/
#include "c.h"
@@ -99,6 +99,7 @@
#undef vsnprintf
#undef snprintf
#undef sprintf
+#undef vfprintf
#undef fprintf
#undef printf
@@ -209,7 +210,7 @@ pg_sprintf(char *str, const char *fmt,...)
return len;
}
-static int
+int
pg_vfprintf(FILE *stream, const char *fmt, va_list args)
{
PrintfTarget target;