lseek: tighten error checking and allow negative offsets for SEEK_END
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
711bb18961
commit
2eacc573df
6
fs/fs.c
6
fs/fs.c
|
@ -910,6 +910,8 @@ loff_t lseek(int fildes, loff_t offset, int whence)
|
|||
case SEEK_SET:
|
||||
if (f->size != FILE_SIZE_STREAM && offset > f->size)
|
||||
goto out;
|
||||
if (offset < 0)
|
||||
goto out;
|
||||
pos = offset;
|
||||
break;
|
||||
case SEEK_CUR:
|
||||
|
@ -918,9 +920,9 @@ loff_t lseek(int fildes, loff_t offset, int whence)
|
|||
pos = f->pos + offset;
|
||||
break;
|
||||
case SEEK_END:
|
||||
if (offset)
|
||||
if (offset > 0)
|
||||
goto out;
|
||||
pos = f->size;
|
||||
pos = f->size + offset;
|
||||
break;
|
||||
default:
|
||||
goto out;
|
||||
|
|
Loading…
Reference in New Issue