Re: [PATCH] kvm tools: Sanitize output characters in serial console

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

 



On 08/10/2011 02:53 PM, walimis wrote:
> On Wed, Aug 10, 2011 at 02:15:45PM +0800, Asias He wrote:
>> On 08/10/2011 01:55 PM, Pekka Enberg wrote:
>>> On Wed, Aug 10, 2011 at 8:43 AM, Asias He <asias.hejun@xxxxxxxxx> wrote:
>>>> On 08/10/2011 01:30 PM, Pekka Enberg wrote:
>>>>> On 8/10/11 2:56 AM, Asias He wrote:
>>>>>> This patch fixes strange characters in serial console.
>>>>>>
>>>>>> Before:
>>>>>>
>>>>>> [    0.448000] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
>>>>>> �[    0.695000] serial8250: ttyS0 at I/O 0x3f8 (irq = 0) is a 16550A
>>>>>> �[    0.942000] serial8250: ttyS1 at I/O 0x2f8 (irq = 0) is a 16550A
>>>>>> �[    1.189000] serial8250: ttyS2 at I/O 0x3e8 (irq = 0) is a 16550A
>>>>>> [    1.194000] Non-volatile memory driver v1.3
>>>>>>
>>>>>> After:
>>>>>>
>>>>>> [    0.541000] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
>>>>>> [    0.788000] serial8250: ttyS0 at I/O 0x3f8 (irq = 0) is a 16550A
>>>>>> [    1.041000] serial8250: ttyS1 at I/O 0x2f8 (irq = 0) is a 16550A
>>>>>> [    1.294000] serial8250: ttyS2 at I/O 0x3e8 (irq = 0) is a 16550A
>>>>>> [    1.309000] Non-volatile memory driver v1.3
>>>>>>
>>>>>> Signed-off-by: Asias He<asias.hejun@xxxxxxxxx>
>>>>>> ---
>>>>>>   tools/kvm/term.c |    7 +++++--
>>>>>>   1 files changed, 5 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/tools/kvm/term.c b/tools/kvm/term.c
>>>>>> index 2a3e1f0..85b41e7 100644
>>>>>> --- a/tools/kvm/term.c
>>>>>> +++ b/tools/kvm/term.c
>>>>>> @@ -5,6 +5,7 @@
>>>>>>   #include<unistd.h>
>>>>>>   #include<sys/uio.h>
>>>>>>   #include<signal.h>
>>>>>> +#include<ctype.h>
>>>>>>
>>>>>>   #include "kvm/read-write.h"
>>>>>>   #include "kvm/term.h"
>>>>>> @@ -57,8 +58,10 @@ int term_putc(int who, char *addr, int cnt)
>>>>>>       if (who != active_console)
>>>>>>           return -1;
>>>>>>
>>>>>> -    while (cnt--)
>>>>>> -        fprintf(stdout, "%c", *addr++);
>>>>>> +    while (cnt--) {
>>>>>> +        if (isascii(*addr))
>>>>>
>>>>> Do things like backspace still work with this?
>>>>
>>>> Sure. Have a try ;-)
>>>>
>>>> http://en.wikipedia.org/wiki/ASCII
>>>
>>> OK, cool. Do we know what the extra characters are and why the guest
>>> is sending them?
> I think the reason is not important here. I use qemu to test
> and it also outputs that extra characters. They seem to be outputted by
> driver or kernel of guest os.
> 
> It's not sane to change the output of guest os. Suppose if we just 
> want to see what "cat /dev/urandom" prints, then only 
> allow ascii characters to be outputted? I think that's not what we expect.


This is a good reason why we should not only allow ascii to be printed.

Anyway, this is really annoying. Maybe it is a serial driver bug?

> 
> walimis
>>>
>>
>>
>> This tells us
>>
>>        while (cnt--) {
>>               if (isascii(*addr))
>>                       fprintf(stdout, "%c", *addr++);
>>               else
>>                       fprintf(stdout, "\n---%x---\n", *addr++);
>>        }
>>
>> the extra chars is 0xff.
>>
>> The reason is not understood.
>>
>> -- 
>> Best Regards,
>> Asias He
>> --
>> To unsubscribe from this list: send the line "unsubscribe kvm" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


-- 
Best Regards,
Asias He
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux