From: Moriyoshi Koizumi Date: Wed, 6 Nov 2002 16:29:16 +0000 (+0000) Subject: Fixed segfaults in case the specified encoding is not acceptable to iconv. X-Git-Tag: php-4.3.0RC1~224 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=49f15ab314dc386d21be24799157dd5ead1a4bc3;p=php Fixed segfaults in case the specified encoding is not acceptable to iconv. --- 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;