projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added checking for maximum packet length.
[silc.git]
/
lib
/
silcclient
/
client_prvmsg.c
diff --git
a/lib/silcclient/client_prvmsg.c
b/lib/silcclient/client_prvmsg.c
index eb90186885a55de14ff53fdf507886f0a471d2bb..be4d8b0d70ce410f51880b201ee356152ad6498a 100644
(file)
--- a/
lib/silcclient/client_prvmsg.c
+++ b/
lib/silcclient/client_prvmsg.c
@@
-75,6
+75,8
@@
void silc_client_send_private_message(SilcClient client,
block_len = silc_cipher_get_block_len(cipher);
/* Set the packet context pointers. */
block_len = silc_cipher_get_block_len(cipher);
/* Set the packet context pointers. */
+ data = buffer->data;
+ data_len = buffer->len;
packetdata.flags = SILC_PACKET_FLAG_PRIVMSG_KEY;
packetdata.type = SILC_PACKET_PRIVATE_MESSAGE;
packetdata.src_id = conn->local_id_data;
packetdata.flags = SILC_PACKET_FLAG_PRIVMSG_KEY;
packetdata.type = SILC_PACKET_PRIVATE_MESSAGE;
packetdata.src_id = conn->local_id_data;
@@
-83,7
+85,10
@@
void silc_client_send_private_message(SilcClient client,
packetdata.dst_id = silc_id_id2str(client_entry->id, SILC_ID_CLIENT);
packetdata.dst_id_len = silc_id_get_len(client_entry->id, SILC_ID_CLIENT);
packetdata.dst_id_type = SILC_ID_CLIENT;
packetdata.dst_id = silc_id_id2str(client_entry->id, SILC_ID_CLIENT);
packetdata.dst_id_len = silc_id_get_len(client_entry->id, SILC_ID_CLIENT);
packetdata.dst_id_type = SILC_ID_CLIENT;
- packetdata.truelen = buffer->len + SILC_PACKET_HEADER_LEN +
+ data_len = SILC_PACKET_DATALEN(data_len, SILC_PACKET_HEADER_LEN +
+ packetdata.src_id_len +
+ packetdata.dst_id_len);
+ packetdata.truelen = data_len + SILC_PACKET_HEADER_LEN +
packetdata.src_id_len + packetdata.dst_id_len;
packetdata.padlen = SILC_PACKET_PADLEN((SILC_PACKET_HEADER_LEN +
packetdata.src_id_len +
packetdata.src_id_len + packetdata.dst_id_len;
packetdata.padlen = SILC_PACKET_PADLEN((SILC_PACKET_HEADER_LEN +
packetdata.src_id_len +
@@
-95,12
+100,12
@@
void silc_client_send_private_message(SilcClient client,
packetdata.src_id_len +
packetdata.dst_id_len,
packetdata.padlen,
packetdata.src_id_len +
packetdata.dst_id_len,
packetdata.padlen,
-
buffer->
len);
+
data_
len);
packetdata.buffer = sock->outbuf;
/* Put the actual encrypted message payload data into the buffer. */
packetdata.buffer = sock->outbuf;
/* Put the actual encrypted message payload data into the buffer. */
- silc_buffer_put(sock->outbuf,
buffer->data, buffer->
len);
+ silc_buffer_put(sock->outbuf,
data, data_
len);
/* Create the outgoing packet */
silc_packet_assemble(&packetdata, cipher);
/* Create the outgoing packet */
silc_packet_assemble(&packetdata, cipher);