]> xenbits.xensource.com Git - libvirt.git/commitdiff
storage: tweak condition to properly test lseek
authorErik Skultety <eskultet@redhat.com>
Tue, 3 Mar 2015 15:57:38 +0000 (16:57 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 4 Mar 2015 13:51:44 +0000 (14:51 +0100)
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

src/fdstream.c

index 5d80fc23fcdb520fa733e7d7b9cb635549e23e0b..b8ea86e435816d10f825501cf08f468f7029f628 100644 (file)
@@ -610,7 +610,7 @@ virFDStreamOpenFileInternal(virStreamPtr st,
     }
 
     if (offset &&
-        lseek(fd, offset, SEEK_SET) != offset) {
+        lseek(fd, offset, SEEK_SET) < 0) {
         virReportSystemError(errno,
                              _("Unable to seek %s to %llu"),
                              path, offset);