X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_open.c;h=c6a2d7d9d49f09a65eaa01f263e23975c97a4064;hp=0774bced2996703eb5b80d4ee7dab9ba343b68ff;hb=f972da18c85ebeb8591f585e7480fae9c1c5c380;hpb=24ebf1bad3d26067cd34cf5cb62d7c936ec2baf7 diff --git a/src/rrd_open.c b/src/rrd_open.c index 0774bce..c6a2d7d 100644 --- a/src/rrd_open.c +++ b/src/rrd_open.c @@ -440,8 +440,13 @@ inline ssize_t rrd_read( { #ifdef HAVE_MMAP size_t _cnt = count; - ssize_t _surplus = rrd_file->pos + _cnt - rrd_file->file_len; + ssize_t _surplus; + if (rrd_file->pos > rrd_file->file_len || _cnt == 0) /* EOF */ + return 0; + if (buf == NULL) + return -1; /* EINVAL */ + _surplus = rrd_file->pos + _cnt - rrd_file->file_len; if (_surplus > 0) { /* short read */ _cnt -= _surplus; }