cvs: php-src /ext/xmlrpc/libxmlrpc encodings.c
| From: | Stanislav Malyshev | Date: | Wed, 19 Sep 2007 00:38:48 +0000 |
| Subject: | cvs: php-src /ext/xmlrpc/libxmlrpc encodings.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-46221@lists.php.net to get a copy of this message | ||
stas Wed Sep 19 00:38:48 2007 UTC
Modified files:
/php-src/ext/xmlrpc/libxmlrpc encodings.c
Log:
MFB: limit iconv parameters here too
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/libxmlrpc/encodings.c?r1=1.7&r2=1.8&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.8
--- 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:38:48 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.8 2007/09/19 00:38:48 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);