[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCH] rpc: remove trailing carriage return character in error string



If the error message string ends with '\r\n', it is not enough
to remove '\n' only which leads to messed string.
Example, after three time incorrect password input, virsh command
virsh -c qemu://remoteserver/system will report error like:

: Connection reset by peerey,gssapi-keyex,gssapi-with-mic,password).

it should be:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
: Connection reset by peer

The terminal interprets '\r' as "move the cursor back to the start
of the current line", so we have to remove the character if it exists.
---
 src/rpc/virnetsocket.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
index 08dfbb0..8385d88 100644
--- a/src/rpc/virnetsocket.c
+++ b/src/rpc/virnetsocket.c
@@ -985,8 +985,14 @@ reread:
         virFileReadLimFD(sock->errfd, 1024, &errout) >= 0 &&
         errout != NULL) {
         size_t elen = strlen(errout);
-        if (elen && errout[elen-1] == '\n')
+        if (elen && errout[elen-1] == '\n') {
             errout[elen-1] = '\0';
+
+            /* remove trailing '\r' if it exists */
+            if (elen-1 && errout[elen-2] == '\r') {
+                errout[elen-2] = '\0';
+            }
+        }
     }
 
     if (ret < 0) {
-- 
1.7.7.5


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]