X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fclient.c;h=cb7452e3dafd710993dbfa81b6612e44a3e1c4e2;hb=0bf0d74b01ffabca588c3a06027436a4d2944618;hp=2294b3aa23c18ee546a7ca463a37eebce2abe3c2;hpb=c7df54e693e34de4037a8cc8b7a28828302c7fa5;p=umurmur.git diff --git a/src/client.c b/src/client.c index 2294b3a..cb7452e 100644 --- a/src/client.c +++ b/src/client.c @@ -300,7 +300,7 @@ int Client_read(client_t *client) do { errno = 0; if (!client->msgsize) - rc = SSL_read(client->ssl, client->rxbuf, 6 - client->rxcount); + rc = SSL_read(client->ssl, &client->rxbuf[client->rxcount], 6 - client->rxcount); else if (client->drainleft > 0) rc = SSL_read(client->ssl, client->rxbuf, client->drainleft > BUFSIZE ? BUFSIZE : client->drainleft); else @@ -312,8 +312,9 @@ int Client_read(client_t *client) else { client->rxcount += rc; if (!client->msgsize && client->rxcount >= 6) { - uint32_t *msgLen = (uint32_t *) &client->rxbuf[2]; - client->msgsize = ntohl(*msgLen); + uint32_t msgLen; + memcpy(&msgLen, &client->rxbuf[2], sizeof(uint32_t)); + client->msgsize = ntohl(msgLen); } if (client->msgsize > BUFSIZE - 6 && client->drainleft == 0) { Log_warn("Too big message received (%d). Discarding.", client->msgsize);