X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fodr_mem.c;h=9d502dfa59478962d71913940c6ffbe74d78dda9;hp=71a10e147137cd99ae935afdea8920bf53d30f7c;hb=ffc8ea2eb23fe8c74fbeb96d05b31c477767923f;hpb=49a4d29a88820425b7d88b8550ca5e4bf5a42adb diff --git a/src/odr_mem.c b/src/odr_mem.c index 71a10e1..9d502df 100644 --- a/src/odr_mem.c +++ b/src/odr_mem.c @@ -10,6 +10,7 @@ #include #endif +#include #include #include "odr-priv.h" #include @@ -96,6 +97,11 @@ int odr_grow_block(ODR b, int min_bytes) int odr_write(ODR o, const char *buf, int bytes) { + if (bytes < 0 || o->op->pos > INT_MAX - bytes) + { + odr_seterror(o, OSPACE, 40); + return -1; + } if (o->op->pos + bytes >= o->op->size && odr_grow_block(o, bytes)) { odr_seterror(o, OSPACE, 40);