summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYouness Alaoui <youness.alaoui@collabora.co.uk>2014-04-18 21:41:55 -0400
committerOlivier CrĂȘte <olivier.crete@collabora.com>2014-05-17 00:22:36 -0400
commitdf4bf34bc072bfc141c61513cf48ccc11d6f772f (patch)
treef3cb2c596fa8f4336ad5db2f2fbb6065d753d843
parent766bdaebd2544142b5bfab1b167f828adec9204e (diff)
downloadlibnice-df4bf34bc072bfc141c61513cf48ccc11d6f772f.tar.gz
Check real received size for pseuddossl handshake
-rw-r--r--socket/pseudossl.c9
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 {