]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
fdstream: don't set return value if looping to read more data
authorDaniel P. Berrangé <berrange@redhat.com>
Tue, 24 Feb 2026 17:11:59 +0000 (17:11 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Fri, 27 Feb 2026 16:40:53 +0000 (16:40 +0000)
The 'ret' variable should only have a value assigned once we have
completely finished reading data, otherwise an error on a subsequent
iteration will report an error but not return a negative value.

Fixes: e23fd0b7fd36c41e6db49df4f4962762d3ef6ab0
Reported-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Tested-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
src/util/virfdstream.c

index 4c974ba5d7f626dc92b6d42399186a0bb54628db..cd2ede450166d4c4f5b6ec12844fcd38ad88d31a 100644 (file)
@@ -961,10 +961,10 @@ static int virFDStreamRead(virStreamPtr st, char *bytes, size_t nbytes)
             virFDStreamMsgFree(msg);
         }
 
-        ret = got;
         if (nbytes > 0) {
             goto more;
         }
+        ret = got;
     } else {
      retry:
         ret = read(fdst->fd, bytes, nbytes);