From: Daniel P. Berrangé <[email protected]>

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 <[email protected]>
Signed-off-by: Daniel P. Berrangé <[email protected]>
---
 src/util/virfdstream.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/util/virfdstream.c b/src/util/virfdstream.c
index 4c974ba5d7..cd2ede4501 100644
--- a/src/util/virfdstream.c
+++ b/src/util/virfdstream.c
@@ -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);
-- 
2.53.0

Reply via email to