]> granicus.if.org Git - php/commitdiff
only test url_stat in read mode
authorRob Richards <rrichards@php.net>
Mon, 22 Dec 2003 16:46:26 +0000 (16:46 +0000)
committerRob Richards <rrichards@php.net>
Mon, 22 Dec 2003 16:46:26 +0000 (16:46 +0000)
ext/libxml/libxml.c

index 11a76a4294727f3b136c57c25f1ada357fb0a8e4..46119de8cdf2b35da31fa4a2e37e3a374c6dfaac 100644 (file)
@@ -238,7 +238,7 @@ int php_libxml_streams_IO_match_wrapper(const char *filename)
        return php_stream_locate_url_wrapper(filename, NULL, 0 TSRMLS_CC) ? 1 : 0;
 }
 
-void *php_libxml_streams_IO_open_wrapper(const char *filename, const char *mode)
+void *php_libxml_streams_IO_open_wrapper(const char *filename, const char *mode, const int read_only)
 {
        char resolved_path[MAXPATHLEN + 1];
        php_stream_statbuf ssbuf;
@@ -257,7 +257,7 @@ void *php_libxml_streams_IO_open_wrapper(const char *filename, const char *mode)
           may try to open files that don't exist, but it is not a failure
           in xml processing (eg. DTD files)  */
        wrapper = php_stream_locate_url_wrapper(resolved_path, &path_to_open, ENFORCE_SAFE_MODE TSRMLS_CC);
-       if (wrapper && wrapper->wops->url_stat) {
+       if (wrapper && read_only && wrapper->wops->url_stat) {
                if (wrapper->wops->url_stat(wrapper, path_to_open, 0, &ssbuf, NULL TSRMLS_CC) == -1) {
                        return NULL;
                }
@@ -272,12 +272,12 @@ void *php_libxml_streams_IO_open_wrapper(const char *filename, const char *mode)
 
 void *php_libxml_streams_IO_open_read_wrapper(const char *filename)
 {
-       return php_libxml_streams_IO_open_wrapper(filename, "rb");
+       return php_libxml_streams_IO_open_wrapper(filename, "rb", 1);
 }
 
 void *php_libxml_streams_IO_open_write_wrapper(const char *filename)
 {
-       return php_libxml_streams_IO_open_wrapper(filename, "wb");
+       return php_libxml_streams_IO_open_wrapper(filename, "wb", 0);
 }
 
 int php_libxml_streams_IO_read(void *context, char *buffer, int len)