From 700641afb86c7615377fa78b5df448ffaaa50c0f Mon Sep 17 00:00:00 2001 From: Thomas Veerman Date: Mon, 16 Jan 2012 15:09:55 +0000 Subject: [PATCH] lseek should not yield a negative file position --- servers/avfs/open.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/servers/avfs/open.c b/servers/avfs/open.c index a236107fd..e3cbf4470 100644 --- a/servers/avfs/open.c +++ b/servers/avfs/open.c @@ -612,9 +612,11 @@ PUBLIC int do_lseek() newpos = sub64ul(pos, -offset); /* Check for overflow. */ - if (ex64hi(newpos) != 0) - r = EINVAL; - else { + if (ex64hi(newpos) != 0) { + r = EOVERFLOW; + } else if ((off_t) ex64lo(newpos) < 0) { /* no negative file size */ + r = EOVERFLOW; + } else { rfilp->filp_pos = newpos; /* insert the new position into the output message */ -- 2.44.0