* [Qemu-trivial] [PATCH] vnc: Clean up vncws_send_handshake_response()
@ 2013-01-23 17:16 Markus Armbruster
2013-01-24 15:51 ` Tim Hardeck
2013-01-25 8:56 ` Tim Hardeck
0 siblings, 2 replies; 4+ messages in thread
From: Markus Armbruster @ 2013-01-23 17:16 UTC (permalink / raw)
To: qemu-devel; +Cc: qemu-trivial, thardeck
Use appropriate types, drop superfluous casts, use sizeof, don't
exploit that this particular call of gnutls_fingerprint() doesn't
change its last argument.
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
ui/vnc-ws.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/ui/vnc-ws.c b/ui/vnc-ws.c
index 9ccdc19..de7e74c 100644
--- a/ui/vnc-ws.c
+++ b/ui/vnc-ws.c
@@ -120,8 +120,8 @@ static char *vncws_extract_handshake_entry(const char *handshake,
static void vncws_send_handshake_response(VncState *vs, const char* key)
{
char combined_key[WS_CLIENT_KEY_LEN + WS_GUID_LEN + 1];
- char hash[SHA1_DIGEST_LEN];
- size_t hash_size = SHA1_DIGEST_LEN;
+ unsigned char hash[SHA1_DIGEST_LEN];
+ size_t hash_size = sizeof(hash);
char *accept = NULL, *response = NULL;
gnutls_datum_t in;
@@ -133,7 +133,7 @@ static void vncws_send_handshake_response(VncState *vs, const char* key)
in.size = WS_CLIENT_KEY_LEN + WS_GUID_LEN;
if (gnutls_fingerprint(GNUTLS_DIG_SHA1, &in, hash, &hash_size)
== GNUTLS_E_SUCCESS) {
- accept = g_base64_encode((guchar *)hash, SHA1_DIGEST_LEN);
+ accept = g_base64_encode(hash, hash_size);
}
if (accept == NULL) {
VNC_DEBUG("Hashing Websocket combined key failed\n");
--
1.7.11.7
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [Qemu-trivial] [PATCH] vnc: Clean up vncws_send_handshake_response()
2013-01-23 17:16 [Qemu-trivial] [PATCH] vnc: Clean up vncws_send_handshake_response() Markus Armbruster
@ 2013-01-24 15:51 ` Tim Hardeck
2013-01-25 8:56 ` Tim Hardeck
1 sibling, 0 replies; 4+ messages in thread
From: Tim Hardeck @ 2013-01-24 15:51 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-trivial, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 1760 bytes --]
Hi Markus,
On 01/23/2013 06:16 PM, Markus Armbruster wrote:
> Use appropriate types, drop superfluous casts, use sizeof, don't
> exploit that this particular call of gnutls_fingerprint() doesn't
> change its last argument.
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Tim Hardeck <thardeck@suse.de>
Regards
Tim
> ---
> ui/vnc-ws.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/ui/vnc-ws.c b/ui/vnc-ws.c
> index 9ccdc19..de7e74c 100644
> --- a/ui/vnc-ws.c
> +++ b/ui/vnc-ws.c
> @@ -120,8 +120,8 @@ static char *vncws_extract_handshake_entry(const char *handshake,
> static void vncws_send_handshake_response(VncState *vs, const char* key)
> {
> char combined_key[WS_CLIENT_KEY_LEN + WS_GUID_LEN + 1];
> - char hash[SHA1_DIGEST_LEN];
> - size_t hash_size = SHA1_DIGEST_LEN;
> + unsigned char hash[SHA1_DIGEST_LEN];
> + size_t hash_size = sizeof(hash);
> char *accept = NULL, *response = NULL;
> gnutls_datum_t in;
>
> @@ -133,7 +133,7 @@ static void vncws_send_handshake_response(VncState *vs, const char* key)
> in.size = WS_CLIENT_KEY_LEN + WS_GUID_LEN;
> if (gnutls_fingerprint(GNUTLS_DIG_SHA1, &in, hash, &hash_size)
> == GNUTLS_E_SUCCESS) {
> - accept = g_base64_encode((guchar *)hash, SHA1_DIGEST_LEN);
> + accept = g_base64_encode(hash, hash_size);
> }
> if (accept == NULL) {
> VNC_DEBUG("Hashing Websocket combined key failed\n");
>
--
SUSE LINUX Products GmbH, GF: Jeff Hawn, Jennifer Guild, Felix
Imendörffer, HRB 16746 (AG Nürnberg)
Maxfeldstr. 5, 90409 Nürnberg, Germany
T: +49 (0) 911 74053-0 F: +49 (0) 911 74053-483
http://www.suse.de/
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [Qemu-trivial] [PATCH] vnc: Clean up vncws_send_handshake_response()
2013-01-23 17:16 [Qemu-trivial] [PATCH] vnc: Clean up vncws_send_handshake_response() Markus Armbruster
2013-01-24 15:51 ` Tim Hardeck
@ 2013-01-25 8:56 ` Tim Hardeck
2013-01-25 9:23 ` Markus Armbruster
1 sibling, 1 reply; 4+ messages in thread
From: Tim Hardeck @ 2013-01-25 8:56 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-trivial, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 1241 bytes --]
Hi Markus,
thanks for your input.
On Wed, 2013-01-23 at 18:16 +0100, Markus Armbruster wrote:
> Use appropriate types, drop superfluous casts, use sizeof, don't
> exploit that this particular call of gnutls_fingerprint() doesn't
> change its last argument.
your patch does work fine but if we expect gnutls_fingerprint to change
the hash_size there has to be an additional check if the hash_size is
bigger than SHA1_DIGEST_LEN.
For example:
diff --git a/ui/vnc-ws.c b/ui/vnc-ws.c
index de7e74c..e64c895 100644
--- a/ui/vnc-ws.c
+++ b/ui/vnc-ws.c
@@ -132,7 +132,7 @@ static void vncws_send_handshake_response(VncState
*vs, const char* key)
in.data = (void *)combined_key;
in.size = WS_CLIENT_KEY_LEN + WS_GUID_LEN;
if (gnutls_fingerprint(GNUTLS_DIG_SHA1, &in, hash, &hash_size)
- == GNUTLS_E_SUCCESS) {
+ == GNUTLS_E_SUCCESS && hash_size <= SHA1_DIGEST_LEN) {
accept = g_base64_encode(hash, hash_size);
}
if (accept == NULL) {
--
SUSE LINUX Products GmbH, GF: Jeff Hawn, Jennifer Guild, Felix
Imendörffer, HRB 16746 (AG Nürnberg)
Maxfeldstr. 5, 90409 Nürnberg, Germany
T: +49 (0) 911 74053-0 F: +49 (0) 911 74053-483
http://www.suse.de/
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 490 bytes --]
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [Qemu-trivial] [PATCH] vnc: Clean up vncws_send_handshake_response()
2013-01-25 8:56 ` Tim Hardeck
@ 2013-01-25 9:23 ` Markus Armbruster
0 siblings, 0 replies; 4+ messages in thread
From: Markus Armbruster @ 2013-01-25 9:23 UTC (permalink / raw)
To: Tim Hardeck; +Cc: qemu-trivial, qemu-devel
Tim Hardeck <thardeck@suse.de> writes:
> Hi Markus,
>
> thanks for your input.
>
> On Wed, 2013-01-23 at 18:16 +0100, Markus Armbruster wrote:
>> Use appropriate types, drop superfluous casts, use sizeof, don't
>> exploit that this particular call of gnutls_fingerprint() doesn't
>> change its last argument.
>
> your patch does work fine but if we expect gnutls_fingerprint to change
> the hash_size there has to be an additional check if the hash_size is
> bigger than SHA1_DIGEST_LEN.
>
> For example:
>
> diff --git a/ui/vnc-ws.c b/ui/vnc-ws.c
> index de7e74c..e64c895 100644
> --- a/ui/vnc-ws.c
> +++ b/ui/vnc-ws.c
> @@ -132,7 +132,7 @@ static void vncws_send_handshake_response(VncState
> *vs, const char* key)
> in.data = (void *)combined_key;
> in.size = WS_CLIENT_KEY_LEN + WS_GUID_LEN;
> if (gnutls_fingerprint(GNUTLS_DIG_SHA1, &in, hash, &hash_size)
> - == GNUTLS_E_SUCCESS) {
> + == GNUTLS_E_SUCCESS && hash_size <= SHA1_DIGEST_LEN) {
> accept = g_base64_encode(hash, hash_size);
> }
> if (accept == NULL) {
Makes sense. I'll respin. Thanks!
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-01-25 9:23 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-23 17:16 [Qemu-trivial] [PATCH] vnc: Clean up vncws_send_handshake_response() Markus Armbruster
2013-01-24 15:51 ` Tim Hardeck
2013-01-25 8:56 ` Tim Hardeck
2013-01-25 9:23 ` Markus Armbruster
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.