Re: cvs: php4 /ext/bz2 bz2.c

From: Date: Thu, 21 Mar 2002 20:43:03 +0000
Subject: Re: cvs: php4 /ext/bz2 bz2.c
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-10552@lists.php.net to get a copy of this message
I'm not sure if this has something to do with zval's but strings including binary strings should always be null-terminated when put in zval->str.val. zval->str.len should be the length without the terminating '\0'. Andi At 16:41 21/03/2002 +0000, Sterling Hughes wrote:
sterling                Thu Mar 21 11:41:24 2002 EDT
Modified files:
    /php4/ext/bz2       bz2.c
Log: 1) ws fixes 2) un-NUL terminate strings... Binary Data should not be NUL terminated, PHP *is* binary safe... Index: php4/ext/bz2/bz2.c diff -u php4/ext/bz2/bz2.c:1.39 php4/ext/bz2/bz2.c:1.40
--- php4/ext/bz2/bz2.c:1.39     Wed Mar 20 21:34:06 2002
+++ php4/ext/bz2/bz2.c Thu Mar 21 11:41:24 2002 @@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
*/ -/* $Id: bz2.c,v 1.39 2002/03/21 02:34:06 wez Exp $ */ +/* $Id: bz2.c,v 1.40 2002/03/21 16:41:24 sterling Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -82,11 +82,12 @@ static size_t php_bz2iop_read(php_stream *stream, char *buf, size_t count TSRMLS_DC) {
-       struct php_bz2_stream_data_t *self = (struct php_bz2_stream_data_t *)stream->abstract;
+       struct php_bz2_stream_data_t *self = (struct php_bz2_stream_data_t *) stream->abstract;
        if (buf == NULL && count == 0) {
                /* we have no way of knowing, so let them try to read some more;
-               * then they will get an error and can stop */
+               * then they will get an error and can stop
+               */
                return 0;
        }
@@ -95,7 +96,8 @@ static size_t php_bz2iop_write(php_stream *stream, const char *buf, size_t count TSRMLS_DC) {
-       struct php_bz2_stream_data_t *self = (struct php_bz2_stream_data_t *)stream->abstract;
+       struct php_bz2_stream_data_t *self = (struct php_bz2_stream_data_t *) stream->abstract;
+
        return BZ2_bzwrite(self->bz_file, (char*)buf, count);
} @@ -106,8 +108,13 @@
        if (close_handle)
                BZ2_bzclose(self->bz_file);
+
        if (self->stream)
-               php_stream_free(self->stream, PHP_STREAM_FREE_CLOSE | (close_handle == 0 ? PHP_STREAM_FREE_PRESERVE_HANDLE : 0));
+               php_stream_free(self->stream,
+                                               PHP_STREAM_FREE_CLOSE |
+                                               (close_handle == 0 ? PHP_STREAM_FREE_PRESERVE_HANDLE : 0)
+                       );
+
        efree(self);
        return ret;
@@ -128,7 +135,10 @@ }; /* {{{ Bzip2 stream openers */ -PHPAPI php_stream *_php_stream_bz2open_from_BZFILE(BZFILE *bz, char *mode, php_stream *innerstream STREAMS_DC TSRMLS_DC) +PHPAPI php_stream *_php_stream_bz2open_from_BZFILE(BZFILE *bz, + char *mode, + php_stream *innerstream + STREAMS_DC TSRMLS_DC) {
        struct php_bz2_stream_data_t *self;
@@ -140,7 +150,12 @@
        return php_stream_alloc_rel(&php_stream_bz2io_ops, self, 0, mode);
} -PHPAPI php_stream *_php_stream_bz2open(char *path, char *mode, int options, char **opened_path, void *wrappercontext STREAMS_DC TSRMLS_DC) +PHPAPI php_stream *_php_stream_bz2open(char *path, + char *mode, + int options, + char **opened_path, + void *wrappercontext + STREAMS_DC TSRMLS_DC) {
        php_stream *retstream = NULL, *stream = NULL;
        char *path_copy;
@@ -171,17 +186,19 @@
                if (stream) {
                        int fd;
-                       if (SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD, (void**)&fd, REPORT_ERRORS))
+                       if (SUCCESS == php_stream_cast(stream, PHP_STREAM_AS_FD, (void**) &fd, REPORT_ERRORS))
                                bz_file = BZ2_bzdopen(fd, mode);
                }
        }
-       if (bz_file)    {
+       if (bz_file) {
                retstream = _php_stream_bz2open_from_BZFILE(bz_file, mode, stream STREAMS_REL_CC TSRMLS_CC);
                if (retstream)
                        return retstream;
+
                BZ2_bzclose(bz_file);
        }
+
        if (stream)
                php_stream_close(stream);
@@ -190,7 +207,7 @@ /* }}} */ -php_stream_wrapper php_stream_bzip2_wrapper = { +php_stream_wrapper php_stream_bzip2_wrapper = {
        _php_stream_bz2open,
        NULL,
        NULL
@@ -200,9 +217,8 @@ PHP_MINIT_FUNCTION(bz2) {
-       if(PG(allow_url_fopen)) {
+       if(PG(allow_url_fopen))
                php_register_url_stream_wrapper("bz2", &php_stream_bzip2_wrapper TSRMLS_CC);
-       }
        return SUCCESS;
} @@ -211,6 +227,7 @@ {
        if (PG(allow_url_fopen))
                php_unregister_url_stream_wrapper("bz2" TSRMLS_CC);
+
        return SUCCESS;
} @@ -241,13 +258,23 @@
        /* If it's not a resource its a string containing the filename to open */
        if (Z_TYPE_PP(file) != IS_RESOURCE) {
                convert_to_string_ex(file);
-               stream = php_stream_bz2open(path, Z_STRVAL_PP(mode), ENFORCE_SAFE_MODE|REPORT_ERRORS, NULL, NULL);
+               stream = php_stream_bz2open(path,
+ Z_STRVAL_PP(mode),
+ ENFORCE_SAFE_MODE|REPORT_ERRORS,
+                                                                       NULL,
+                                                                       NULL);
        } else {
                /* If it is a resource, than its a stream resource */
                int type;
                int fd;
-               stream = (php_stream *)zend_fetch_resource(file TSRMLS_CC, -1, "File-Handle", &type, 1, php_file_le_stream());
+               stream = (php_stream *) zend_fetch_resource(file
+ TSRMLS_CC,
+ -1,
+ "File-Handle",
+ &type,
+ 1,
+ php_file_le_stream());
                ZEND_VERIFY_RESOURCE(stream);
                if (!php_stream_cast(stream, PHP_STREAM_AS_FD, (void*)&fd, REPORT_ERRORS))
                        RETURN_FALSE;
@@ -347,7 +374,6 @@
                /* Copy the buffer, we have perhaps allocate alot more than we need,
                   so we erealloc() the buffer to the proper size */
                dest = erealloc(dest, size + 1);
-               dest[size] = '\0';
                RETURN_STRINGL(dest, size, 0);
        }
} @@ -413,7 +439,6 @@
                /* we might have allocated a little to much, so erealloc the buffer
                down to size, before returning it */
                dest = erealloc(dest, size + 1);
-               dest[size] = '\0';
                RETURN_STRINGL(dest, size, 0);
        }
} @@ -439,7 +464,7 @@
                RETURN_FALSE;
        }
-       self = (struct php_bz2_stream_data_t *)stream->abstract;
+       self = (struct php_bz2_stream_data_t *) stream->abstract;
        /* Fetch the error information */
        errstr = BZ2_bzerror(self->bz_file, &errnum);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.cvs (#10552) next »