From 49f15ab314dc386d21be24799157dd5ead1a4bc3 Mon Sep 17 00:00:00 2001 From: Moriyoshi Koizumi Date: Wed, 6 Nov 2002 16:29:16 +0000 Subject: [PATCH] Fixed segfaults in case the specified encoding is not acceptable to iconv. --- ext/iconv/iconv.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ext/iconv/iconv.c b/ext/iconv/iconv.c index 1286a28f93..a7f0ed0ffb 100644 --- a/ext/iconv/iconv.c +++ b/ext/iconv/iconv.c @@ -251,8 +251,10 @@ php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len, if (cd == (iconv_t)(-1)) { if (errno == EINVAL) { + *out = NULL; return PHP_ICONV_ERR_WRONG_CHARSET; } else { + *out = NULL; return PHP_ICONV_ERR_CONVERTER; } } @@ -263,11 +265,11 @@ php_iconv_err_t php_iconv_string(const char *in_p, size_t in_len, out_buf = (char *) emalloc(bsz+1); out_p = out_buf; - while(in_left > 0) { + while (in_left > 0) { result = icv(cd, (const char **) &in_p, &in_left, (char **) &out_p, &out_left); out_size = bsz - out_left; - if( result == (size_t)(-1) ) { - if( errno == E2BIG && in_left > 0 ) { + if (result == (size_t)(-1)) { + if (errno == E2BIG && in_left > 0) { /* converted string is longer than out buffer */ bsz += in_len; -- 2.50.1