[libvirt] [PATCH] rpc: remove trailing carriage return character in error string
Eric Blake
eblake at redhat.com
Wed Jul 18 14:28:24 UTC 2012
On 07/18/2012 04:15 AM, Guannan Ren wrote:
> 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(-)
Looks okay, but...
>
> 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';
> + }
> + }
Rather than special-casing just '\r\n' and '\n', should we instead:
while (elen && c_isspace(errout[elen - 1]))
errout[--elen] = '\0';
to trim ALL trailing whitespace?
--
Eric Blake eblake at redhat.com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120718/f136a1e0/attachment-0001.sig>
More information about the libvir-list
mailing list