From f4a4c91a9822b25d2f61e1ce8638d40ddb03c6f7 Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Fri, 1 Aug 2014 14:37:23 +0400 Subject: [PATCH] Fixing read_sources: buffer and buffer_size were filled incorrectly. --- src/main.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/main.c b/src/main.c index 5ce0a4f8a..990d05141 100644 --- a/src/main.c +++ b/src/main.c @@ -130,12 +130,17 @@ read_sources (const char *script_file_names[], __rewind( file); - const size_t source_size = (size_t)script_len; - size_t bytes_read = 0; + const size_t current_source_size = (size_t)script_len; - while ( bytes_read < source_size ) + if ( source_buffer_tail + current_source_size >= source_buffer + sizeof(source_buffer) ) { - bytes_read += __fread( source_buffer_tail, 1, source_size, file); + jerry_exit (ERR_MEMORY); + } + + size_t bytes_read = 0; + while ( bytes_read < current_source_size ) + { + bytes_read += __fread( source_buffer_tail + bytes_read, sizeof(uint8_t), current_source_size - bytes_read, file); if ( __ferror( file) != 0 ) { @@ -145,11 +150,14 @@ read_sources (const char *script_file_names[], __fclose( file); - source_buffer_tail += source_size; - - *out_source_size_p += source_size; + source_buffer_tail += current_source_size; } + const size_t source_size = (size_t) (source_buffer_tail - source_buffer); + JERRY_ASSERT( source_size < sizeof(source_buffer) ); + + *out_source_size_p = source_size; + return (const char*)source_buffer; }