]> granicus.if.org Git - php/commitdiff
Fixed segfaults in case the specified encoding is not acceptable to iconv.
authorMoriyoshi Koizumi <moriyoshi@php.net>
Wed, 6 Nov 2002 16:29:16 +0000 (16:29 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Wed, 6 Nov 2002 16:29:16 +0000 (16:29 +0000)
ext/iconv/iconv.c

index 1286a28f93fdf08886f5d94a6778a725be55d76c..a7f0ed0ffb13243f57b22bdbf5dab80ebac7a4bf 100644 (file)
@@ -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;