changeset 92:a73e43fa20e0 HEAD

warn if io_buffer_create_mmap() contains invalid size parameter
author Timo Sirainen <tss@iki.fi>
date Thu, 29 Aug 2002 01:52:57 +0300
parents dc0891523276
children 858984f26cf8
files src/lib/iobuffer.c
diffstat 1 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/iobuffer.c	Thu Aug 29 01:42:00 2002 +0300
+++ b/src/lib/iobuffer.c	Thu Aug 29 01:52:57 2002 +0300
@@ -93,10 +93,18 @@
 		buf->start_offset = buf->size = 0;
 	}
 
+	if (start_offset > stop_offset)
+		start_offset = stop_offset;
+
+	if (size > (uoff_t) (stop_offset-start_offset)) {
+		i_warning("Trying to create IOBuffer with size %"UOFF_T_FORMAT
+			  " but we have only %"UOFF_T_FORMAT" bytes available "
+			  "in file", size, stop_offset-start_offset);
+		size = stop_offset-start_offset;
+	}
+
 	buf->start_offset = start_offset;
-	buf->size = size > 0 ? size :
-		start_offset > stop_offset ? 0 :
-		stop_offset - start_offset;
+	buf->size = size > 0 ? size : stop_offset - start_offset;
 
 	buf->skip = buf->pos = buf->start_offset;
 	return buf;