summaryrefslogtreecommitdiff
path: root/liblangtag/liblangtag-0.4.0-vsnprintf.patch
blob: 09e1987677ec987f0d227446b88f589293803897 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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);