use lseek64 to resolve offset oveflow

The offset variable in lseek is 32 bit and get easily overflow
when accessing with large offset in dd command.
Use lseek64 to resolve it.

Change-Id: Ib75d9dcb587004a6851365ab5bb8584ce1010b57
This commit is contained in:
Jongrak Kwon 2013-04-16 23:00:35 -07:00
parent ffc5a4a529
commit c05aae4ac4
1 changed files with 4 additions and 4 deletions

View File

@ -590,8 +590,8 @@ pos_in(void)
/* If not a pipe or tape device, try to seek on it. */
if (!(in.flags & (ISPIPE|ISTAPE))) {
if (lseek(in.fd,
(off_t)in.offset * (off_t)in.dbsz, SEEK_CUR) == -1) {
if (lseek64(in.fd,
(off64_t)in.offset * (off64_t)in.dbsz, SEEK_CUR) == -1) {
fprintf(stderr, "%s: seek error: %s",
in.name, strerror(errno));
exit(1);
@ -661,8 +661,8 @@ pos_out(void)
* have specified the seek operand.
*/
if (!(out.flags & ISTAPE)) {
if (lseek(out.fd,
(off_t)out.offset * (off_t)out.dbsz, SEEK_SET) == -1) {
if (lseek64(out.fd,
(off64_t)out.offset * (off64_t)out.dbsz, SEEK_SET) == -1) {
fprintf(stderr, "%s: seek error: %s\n",
out.name, strerror(errno));
exit(1);