diff options
author | Youness Alaoui <youness.alaoui@collabora.co.uk> | 2014-04-18 21:41:55 -0400 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2014-05-17 00:22:36 -0400 |
commit | df4bf34bc072bfc141c61513cf48ccc11d6f772f (patch) | |
tree | f3cb2c596fa8f4336ad5db2f2fbb6065d753d843 | |
parent | 766bdaebd2544142b5bfab1b167f828adec9204e (diff) | |
download | libnice-df4bf34bc072bfc141c61513cf48ccc11d6f772f.tar.gz |
Check real received size for pseuddossl handshake
-rw-r--r-- | socket/pseudossl.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/socket/pseudossl.c b/socket/pseudossl.c index c713b2f..af9c7d5 100644 --- a/socket/pseudossl.c +++ b/socket/pseudossl.c @@ -171,12 +171,12 @@ socket_close (NiceSocket *sock) } static gboolean -server_handshake_valid(NiceSocket *sock, GInputVector *data) +server_handshake_valid(NiceSocket *sock, GInputVector *data, guint length) { PseudoSSLPriv *priv = sock->priv; if (priv->compatibility == NICE_PSEUDOSSL_SOCKET_COMPATIBILITY_MSOC) { - if (data->size == sizeof(SSL_SERVER_MSOC_HANDSHAKE)) { + if (length == sizeof(SSL_SERVER_MSOC_HANDSHAKE)) { guint8 *buf = data->buffer; memset(buf + 11, 0, 32); @@ -186,7 +186,7 @@ server_handshake_valid(NiceSocket *sock, GInputVector *data) } return FALSE; } else { - return data->size == sizeof(SSL_SERVER_GOOGLE_HANDSHAKE) && + return length == sizeof(SSL_SERVER_GOOGLE_HANDSHAKE) && memcmp(SSL_SERVER_GOOGLE_HANDSHAKE, data->buffer, sizeof(SSL_SERVER_GOOGLE_HANDSHAKE)) == 0; } @@ -225,7 +225,8 @@ socket_recv_messages (NiceSocket *sock, if (ret <= 0) { return ret; - } else if (ret == 1 && server_handshake_valid(sock, &local_recv_buf)) { + } else if (ret == 1 && server_handshake_valid(sock, &local_recv_buf, + local_recv_message.length)) { priv->handshaken = TRUE; nice_socket_flush_send_queue (priv->base_socket, &priv->send_queue); } else { |