cvs: php-src(PHP_5_2) /ext/xmlrpc/libxmlrpc encodings.c
| From: | Stanislav Malyshev | Date: | Wed, 19 Sep 2007 00:33:43 +0000 |
| Subject: | cvs: php-src(PHP_5_2) /ext/xmlrpc/libxmlrpc encodings.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-46219@lists.php.net to get a copy of this message | ||
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);