According to the POSIX standard, off_t (returned by lseek) is defined as
signed integral type no shorter than int. Because our offset variable is defined
as unsigned long long, the original check was passed successfully if UINT64_MAX had
been used as offset value, due to implicit conversion.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=
1177219
(cherry picked from commit
3fde7986d6694f122ae919d68ec64eee79bd51db)
}
if (offset &&
- lseek(fd, offset, SEEK_SET) != offset) {
+ lseek(fd, offset, SEEK_SET) < 0) {
virReportSystemError(errno,
_("Unable to seek %s to %llu"),
path, offset);