[libvirt] [PATCH] rpc: remove trailing carriage return character in error string
Guannan Ren
gren at redhat.com
Wed Jul 18 10:15:25 UTC 2012
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
More information about the libvir-list
mailing list