Commit 44bc11b1 authored by Youness Alaoui's avatar Youness Alaoui

Return 0 in stun_agent_finish_message if there is no more slots for saved ids

parent ed7e0e6d
...@@ -500,10 +500,21 @@ size_t stun_agent_finish_message (StunAgent *agent, StunMessage *msg, ...@@ -500,10 +500,21 @@ size_t stun_agent_finish_message (StunAgent *agent, StunMessage *msg,
{ {
uint8_t *ptr; uint8_t *ptr;
uint32_t fpr; uint32_t fpr;
int i; int saved_id_idx = 0;
StunTransactionId id;
uint8_t md5[16]; uint8_t md5[16];
if (stun_message_get_class (msg) == STUN_REQUEST) {
for (saved_id_idx = 0; saved_id_idx < STUN_AGENT_MAX_SAVED_IDS; saved_id_idx++) {
if (agent->sent_ids[saved_id_idx].valid == FALSE) {
break;
}
}
}
if (saved_id_idx == STUN_AGENT_MAX_SAVED_IDS) {
stun_debug ("Saved ids full");
return 0;
}
if (msg->key != NULL) { if (msg->key != NULL) {
key = msg->key; key = msg->key;
key_len = msg->key_len; key_len = msg->key_len;
...@@ -602,20 +613,14 @@ size_t stun_agent_finish_message (StunAgent *agent, StunMessage *msg, ...@@ -602,20 +613,14 @@ size_t stun_agent_finish_message (StunAgent *agent, StunMessage *msg,
if (stun_message_get_class (msg) == STUN_REQUEST) { if (stun_message_get_class (msg) == STUN_REQUEST) {
for (i = 0; i < STUN_AGENT_MAX_SAVED_IDS; i++) { stun_message_id (msg, agent->sent_ids[saved_id_idx].id);
if (agent->sent_ids[i].valid == FALSE) { agent->sent_ids[saved_id_idx].method = stun_message_get_method (msg);
stun_message_id (msg, id); agent->sent_ids[saved_id_idx].key = (uint8_t *) key;
memcpy (agent->sent_ids[i].id, id, sizeof(StunTransactionId)); agent->sent_ids[saved_id_idx].key_len = key_len;
agent->sent_ids[i].method = stun_message_get_method (msg); memcpy (agent->sent_ids[saved_id_idx].long_term_key, msg->long_term_key,
agent->sent_ids[i].key = (uint8_t *) key; sizeof(msg->long_term_key));
agent->sent_ids[i].key_len = key_len; agent->sent_ids[saved_id_idx].long_term_valid = msg->long_term_valid;
memcpy (agent->sent_ids[i].long_term_key, msg->long_term_key, agent->sent_ids[saved_id_idx].valid = TRUE;
sizeof(msg->long_term_key));
agent->sent_ids[i].long_term_valid = msg->long_term_valid;
agent->sent_ids[i].valid = TRUE;
break;
}
}
} }
msg->key = (uint8_t *) key; msg->key = (uint8_t *) key;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment