[Libreoffice-commits] .: liblangtag/liblangtag-0.4.0-vsnprintf.patch liblangtag/UnpackedTarball_langtag.mk

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Sat Dec 1 04:25:31 PST 2012


 liblangtag/UnpackedTarball_langtag.mk       |    1 
 liblangtag/liblangtag-0.4.0-vsnprintf.patch |   30 ++++++++++++++++++++++++++++
 2 files changed, 31 insertions(+)

New commits:
commit 7580038e24b546a5288ab16f8507f73f1c6fd738
Author: Luboš Luňák <l.lunak at suse.cz>
Date:   Sat Dec 1 13:22:21 2012 +0100

    vsnprintf() is not portable
    
    http://perfec.to/vsnprintf/
    At least MSVC2010 implementation returns -1 when the result doesn't fit,
    so the excepted size is not computed correctly. Let's hope 16k is
    big enough for everybody(TM).
    
    Change-Id: I636487c7723651bfa74513018be786a45b6c796d

diff --git a/liblangtag/UnpackedTarball_langtag.mk b/liblangtag/UnpackedTarball_langtag.mk
index 94d0438..663d724 100644
--- a/liblangtag/UnpackedTarball_langtag.mk
+++ b/liblangtag/UnpackedTarball_langtag.mk
@@ -32,6 +32,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,langtag,\
 	liblangtag/liblangtag-0.4.0-windows2.patch \
 	liblangtag/liblangtag-0.4.0-msvcprojects.patch \
 	liblangtag/liblangtag-0.4.0-ppc.patch \
+	liblangtag/liblangtag-0.4.0-vsnprintf.patch \
 ))
 endif
 
diff --git a/liblangtag/liblangtag-0.4.0-vsnprintf.patch b/liblangtag/liblangtag-0.4.0-vsnprintf.patch
new file mode 100644
index 0000000..09e1987
--- /dev/null
+++ b/liblangtag/liblangtag-0.4.0-vsnprintf.patch
@@ -0,0 +1,30 @@
+--- misc/liblangtag-0.4.0/liblangtag/lt-utils.c	2012-12-01 10:46:26.000000000 +0100
++++ misc/build/liblangtag-0.4.0/liblangtag/lt-utils.c	2012-12-01 13:17:41.421568551 +0100
+@@ -18,6 +18,7 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <memory.h>
++#include <stdlib.h>
+ #include "lt-messages.h"
+ #include "lt-utils.h"
+ 
+@@ -121,7 +121,7 @@ char *
+ lt_strdup_vprintf(const char *format,
+ 		  va_list     args)
+ {
+-	char *retval, c;
++	char *retval, tmpbuf[ 16384 ];
+ 	va_list ap;
+ 	int size;
+ 
+@@ -133,7 +133,9 @@ lt_strdup_vprintf(const char *format,
+ 	va_copy(ap, args);
+ #endif
+ 
+-	size = vsnprintf(&c, 1, format, ap) + 1;
++	size = vsnprintf(tmpbuf, sizeof(tmpbuf), format, ap) + 1;
++	if( size == 0 ) // -1 + 1
++		abort();
+ 
+ 	va_end(ap);
+ 


More information about the Libreoffice-commits mailing list