]> granicus.if.org Git - php/commitdiff
Fixed crash on win32 in case of negative size
authorDmitry Stogov <dmitry@php.net>
Wed, 18 Apr 2007 14:23:35 +0000 (14:23 +0000)
committerDmitry Stogov <dmitry@php.net>
Wed, 18 Apr 2007 14:23:35 +0000 (14:23 +0000)
main/streams/plain_wrapper.c

index 420f8a63c711bf72b8eb0898efc435957840e8c5..11e05a4672b32833a30ca4e73ff4718b557fe11e 100644 (file)
@@ -777,8 +777,13 @@ static int php_stdiop_set_option(php_stream *stream, int option, int value, void
                                case PHP_STREAM_TRUNCATE_SUPPORTED:
                                        return fd == -1 ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK;
 
-                               case PHP_STREAM_TRUNCATE_SET_SIZE:
-                                       return ftruncate(fd, *(ptrdiff_t*)ptrparam) == 0 ? PHP_STREAM_OPTION_RETURN_OK : PHP_STREAM_OPTION_RETURN_ERR;
+                               case PHP_STREAM_TRUNCATE_SET_SIZE: {
+                                       ptrdiff_t new_size = *(ptrdiff_t*)ptrparam;
+                                       if (new_size < 0) {
+                                               return PHP_STREAM_OPTION_RETURN_ERR;
+                                       }
+                                       return ftruncate(fd, new_size) == 0 ? PHP_STREAM_OPTION_RETURN_OK : PHP_STREAM_OPTION_RETURN_ERR;
+                               }
                        }
                        
                default: