stas Wed Sep 19 00:33:43 2007 UTC
Modified files: (Branch: PHP_5_2)
/php-src/ext/xmlrpc/libxmlrpc encodings.c
Log:
limit iconv parameters here too
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/libxmlrpc/encodings.c?r1=1.7&r2=1.7.6.1&diff_format=u
Index: php-src/ext/xmlrpc/libxmlrpc/encodings.c
diff -u php-src/ext/xmlrpc/libxmlrpc/encodings.c:1.7
php-src/ext/xmlrpc/libxmlrpc/encodings.c:1.7.6.1
--- php-src/ext/xmlrpc/libxmlrpc/encodings.c:1.7 Mon Mar 8 23:04:33 2004
+++ php-src/ext/xmlrpc/libxmlrpc/encodings.c Wed Sep 19 00:33:43 2007
@@ -41,7 +41,7 @@
#include <stdlib.h>
#endif
-static const char rcsid[] = "#(@) $Id: encodings.c,v 1.7 2004/03/08 23:04:33
abies Exp $";
+static const char rcsid[] = "#(@) $Id: encodings.c,v 1.7.6.1 2007/09/19
00:33:43 stas Exp $";
#include <errno.h>
@@ -53,6 +53,10 @@
#include "encodings.h"
+#ifndef ICONV_CSNMAXLEN
+#define ICONV_CSNMAXLEN 64
+#endif
+
static char* convert(const char* src, int src_len, int *new_len, const char*
from_enc, const char* to_enc) {
char* outbuf = 0;
@@ -60,9 +64,13 @@
size_t outlenleft = src_len;
size_t inlenleft = src_len;
int outlen = src_len;
- iconv_t ic = iconv_open(to_enc, from_enc);
+ iconv_t ic;
char* out_ptr = 0;
+ if(strlen(to_enc) >= ICONV_CSNMAXLEN || strlen(from_enc) >=
ICONV_CSNMAXLEN) {
+ return NULL;
+ }
+ ic = iconv_open(to_enc, from_enc);
if(ic != (iconv_t)-1) {
size_t st;
outbuf = (char*)malloc(outlen + 1);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php