]> granicus.if.org Git - php/commitdiff
Fixed crash
authorDmitry Stogov <dmitry@php.net>
Wed, 18 Apr 2007 13:53:19 +0000 (13:53 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 18 Apr 2007 13:53:19 +0000 (13:53 +0000)
main/streams/plain_wrapper.c

index 4b83aa7189014e44783da928e3a0b3cddead67ca..877b605a7d8baac6e154ae90517bbd5d8929deda 100644 (file)
@@ -714,8 +714,16 @@ static int php_stdiop_set_option(php_stream *stream, int option, int value, void
                                                        return PHP_STREAM_OPTION_RETURN_ERR;
                                                }
 
-                                               if (range->length == 0) {
-                                                       range->length = GetFileSize(hfile, NULL) - range->offset;
+                                               size = GetFileSize(hfile, NULL);
+                                               if (range->length == 0 && range->offset > 0 && range->offset < size) {
+                                                       range->length = size - range->offset;
+                                               }
+                                               if (range->length == 0 || range->length > size) {
+                                                       range->length = size;
+                                               }
+                                               if (range->offset >= size) {
+                                                       range->offset = size;
+                                                       range->length = 0;
                                                }
 
                                                /* figure out how big a chunk to map to be able to view the part that we need */