Two VNC patches
I sent this pair of VNC-related patches to the qemu-devel list a couple of weeks back and I'm not sure whether they've got lost in the cracks or were in some way not acceptable and need fixing up.
The first one is a straightforward bug-fix, and the second is a trivial convenience feature in the monitor which I imagine ought to be fairly uncontroversial?
Cheers,
Chris.
Fix off-by-one bug limiting VNC passwords to 7 characters instead of 8
monitor_readline expects buf_size to include the terminating \0, but do_change_vnc in monitor.c calls it as though it doesn't. The other site where monitor_readline reads a password (in vl.c) passes the buffer length correctly.
--- monitor.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
monitor.c +1 -2
@@ -433,8 +433,7 @@ static void do_change_vnc(const char *target)if (strcmp (target,"passwd" ) ==0 ||strcmp (target,"password" ) ==0 ) {char password[9 ]; -monitor_readline ("Password: " ,1 , password,sizeof (password)-1 ); - password[sizeof (password)-1 ] ='\0' ; +monitor_readline ("Password: " ,1 , password,sizeof (password));if (vnc_display_password (NULL , password) <0 )term_printf ("could not set VNC server password\n" ); }else {
Accept password as an argument to 'change vnc password' monitor command
This allows easier use of the change vnc password monitor command from management scripts, without having to implement expect(1)-like behaviour.
--- monitor.c | 14 +++++++++----- qemu-doc.texi | 8 ++++---- 2 files changed, 13 insertions(+), 9 deletions(-)
monitor.c +9 -5
@@ -428,12 +428,16 @@ static void do_change_block(const char *device, const char *filename, const charqemu_key_check (bs, filename); } -static void do_change_vnc (const char *target) +static void do_change_vnc (const char *target,const char *arg) {if (strcmp (target,"passwd" ) ==0 ||strcmp (target,"password" ) ==0 ) {char password[9 ]; -monitor_readline ("Password: " ,1 , password,sizeof (password)); +if (arg) { +strncpy (password, arg,sizeof (password)); + password[sizeof (password) -1 ] ='\0' ; + }else +monitor_readline ("Password: " ,1 , password,sizeof (password));if (vnc_display_password (NULL , password) <0 )term_printf ("could not set VNC server password\n" ); }else {
@@ -442,12 +446,12 @@ static void do_change_vnc(const char *target) } } -static void do_change (const char *device,const char *target,const char *fmt) +static void do_change (const char *device,const char *target,const char *arg) {if (strcmp (device,"vnc" ) ==0 ) { -do_change_vnc (target); +do_change_vnc (target, arg); }else { -do_change_block (device, target, fmt); +do_change_block (device, target, arg); } }
qemu-doc.texi +4 -4
@@ -1233,11 +1233,11 @@ and @var{options} are described at @ref{sec_invocation}. eg (qemu) change vnc localhost:1 @end example -@item change vnc password +@item change vnc password [@var{password}] -Change the password associated with the VNC server. The monitor will prompt for -the new password to be entered. VNC passwords are only significant upto 8 letters. -eg. +Change the password associated with the VNC server. If the new password is not +supplied, the monitor will prompt for it to be entered. VNC passwords are only +significant up to 8 letters. eg @example (qemu) change vnc password
Hey Chris,
Am Montag, den 08.12.2008, 13:56 +0000 schrieb Chris Webb:
Quoted 3 lines
I sent this pair of VNC-related patches to the qemu-devel list a couple of weeks back and I'm not sure whether they've got lost in the cracks or were in some way not acceptable and need fixing up.
Can you resend them as inline patches?
Cheers fabian
Quoted 111 lines
The first one is a straightforward bug-fix, and the second is a trivial convenience feature in the monitor which I imagine ought to be fairly uncontroversial?
Cheers,
Chris.
E-Mail-Nachricht-AnlageQuoted 20 lines
-------- Weitergeleitete Nachricht --------
Fix off-by-one bug limiting VNC passwords to 7 characters instead of 8
monitor_readlineexpectsbuf_sizeto include the terminating \0, butdo_change_vncinmonitor.ccalls it as though it doesn't. The other site wheremonitor_readlinereads a password (invl.c) passes the buffer length correctly.Signed-off-by Chris Webb <[email protected]>--- monitor.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)monitor.c +0
-0monitor.c static void do_change_vnc(const char *target) · line 439
Quoted 9 lines
monitor.c +1
-2@@ -433,8 +433,7 @@ static void do_change_vnc(const char *target)if (strcmp (target,"passwd" ) ==0 ||strcmp (target,"password" ) ==0 ) {char password[9 ]; -monitor_readline ("Password: " ,1 , password,sizeof (password)-1 ); - password[sizeof (password)-1 ] ='\0' ; +monitor_readline ("Password: " ,1 , password,sizeof (password));if (vnc_display_password (NULL , password) <0 )term_printf ("could not set VNC server password\n" ); }else {E-Mail-Nachricht-Anlage
Quoted 73 lines
-------- Weitergeleitete Nachricht --------
Accept password as an argument to 'change vnc password' monitor command
This allows easier use of the change vnc password monitor command from management scripts, without having to implement expect(1)-like behaviour.
Signed-off-by Chris Webb <[email protected]>--- monitor.c | 14 +++++++++----- qemu-doc.texi | 8 ++++---- 2 files changed, 13 insertions(+), 9 deletions(-)monitor.c +9
-5@@ -428,12 +428,16 @@ static void do_change_block(const char *device, const char *filename, const charqemu_key_check (bs, filename); } -static void do_change_vnc (const char *target) +static void do_change_vnc (const char *target,const char *arg) {if (strcmp (target,"passwd" ) ==0 ||strcmp (target,"password" ) ==0 ) {char password[9 ]; -monitor_readline ("Password: " ,1 , password,sizeof (password)); +if (arg) { +strncpy (password, arg,sizeof (password)); + password[sizeof (password) -1 ] ='\0' ; + }else +monitor_readline ("Password: " ,1 , password,sizeof (password));if (vnc_display_password (NULL , password) <0 )term_printf ("could not set VNC server password\n" ); }else {@@ -442,12 +446,12 @@ static void do_change_vnc(const char *target) } } -static void do_change (const char *device,const char *target,const char *fmt) +static void do_change (const char *device,const char *target,const char *arg) {if (strcmp (device,"vnc" ) ==0 ) { -do_change_vnc (target); +do_change_vnc (target, arg); }else { -do_change_block (device, target, fmt); +do_change_block (device, target, arg); } }qemu-doc.texi +4
-4@@ -1233,11 +1233,11 @@ and @var{options} are described at @ref{sec_invocation}. eg (qemu) change vnc localhost:1 @end example -@item change vnc password +@item change vnc password [@var{password}] -Change the password associated with the VNC server. The monitor will prompt for -the new password to be entered. VNC passwords are only significant upto 8 letters. -eg. +Change the password associated with the VNC server. If the new password is not +supplied, the monitor will prompt for it to be entered. VNC passwords are only +significant up to 8 letters. eg @example (qemu) change vnc password
Quoted 1 line · Fabian Deutsch
Can you resend them as inline patches?
Sure, no problem: I've resent the original messages which had the patches inline.
Best wishes,
Chris.