Daniel P. Berrange wrote: > On Mon, Feb 01, 2010 at 10:18:27PM +0100, Jim Meyering wrote: >> >> In src/qemu/qemu_driver.c, coverity reports this: >> >> Event negative_return_fn: Called negative-returning function "lseek(logfile, 0L, 2)" >> Event var_assign: NEGATIVE return value of "lseek" assigned to signed variable "pos" >> At conditional (1): "(pos = lseek(logfile, 0L, 2)) < 0" taking true path >> 2877 if ((pos = lseek(logfile, 0, SEEK_END)) < 0) >> 2878 VIR_WARN(_("Unable to seek to end of logfile: %s"), >> 2879 virStrerror(errno, ebuf, sizeof ebuf)); > > I think it'd be less surprising to just set 'pos = 0' inside the if > branch here, so later code doesn't have to worry about unexpected > negative values. Oh. I pushed after DV's ACK. That would let the later code continue, but using (lseek'ing to) an invalid position. Sounds like it could result in a cascade of additional errors, or worse, silent malfunction. But this is largely hypothetical, since failing to lseek-to-EOF on a valid file descriptor is not likely to happen. >> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c >> index 22593bf..676a27b 100644 >> --- a/src/qemu/qemu_driver.c >> +++ b/src/qemu/qemu_driver.c >> @@ -558,8 +558,8 @@ qemudLogReadFD(virConnectPtr conn, const char* logDir, const char* name, off_t p >> close(fd); >> return -1; >> } >> - if (lseek(fd, pos, SEEK_SET) < 0) { >> - virReportSystemError(conn, errno, >> + if (pos < 0 || lseek(fd, pos, SEEK_SET) < 0) { >> + virReportSystemError(conn, pos < 0 ? 0 : errno, >> _("Unable to seek to %lld in %s"), >> (long long) pos, logfile); >> close(fd); -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list