mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 22:30:07 +00:00
hurd: Detect 32bit overflow in value returned by lseek
* sysdeps/mach/hurd/lseek.c: Include <errno.h>. * sysdeps/mach/hurd/lseek.c (__libc_lseek): Check that the value returned by __lseek64 can fit off_t, return EOVERFLOW otherwise.
This commit is contained in:
parent
298a8b59d4
commit
faf7bbc2d0
@ -5,6 +5,9 @@
|
||||
of sendfile.
|
||||
* sysdeps/mach/hurd/sendfile64.c (sendfile64): Rename to __sendfile64.
|
||||
(sendfile64): New strong alias.
|
||||
* sysdeps/mach/hurd/lseek.c: Include <errno.h>.
|
||||
* sysdeps/mach/hurd/lseek.c (__libc_lseek): Check that the value
|
||||
returned by __lseek64 can fit off_t, return EOVERFLOW otherwise.
|
||||
|
||||
2018-06-15 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
|
@ -17,12 +17,22 @@
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* Seek to OFFSET on FD, starting from WHENCE. */
|
||||
off_t
|
||||
__libc_lseek (int fd, off_t offset, int whence)
|
||||
{
|
||||
return __libc_lseek64 (fd, (off64_t) offset, whence);
|
||||
off64_t res64 = __libc_lseek64 (fd, (off64_t) offset, whence);
|
||||
off_t res = (off_t) res64;
|
||||
|
||||
if (sizeof res != sizeof res64 && res != res64)
|
||||
{
|
||||
__set_errno (EOVERFLOW);
|
||||
return (off_t) -1;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
weak_alias (__libc_lseek, __lseek)
|
||||
|
Loading…
Reference in New Issue
Block a user