aboutsummaryrefslogtreecommitdiff
path: root/srtp
diff options
context:
space:
mode:
authorRyan Hooper <ryhooper@cisco.com>2017-02-08 15:28:56 -0500
committerRyan Hooper <ryhooper@cisco.com>2017-02-08 15:28:56 -0500
commit5cd58c0f7f9fe331df4061d7519372c2a1bbe656 (patch)
treebbff1724248f5a63098a072badbbc06df34eb81f /srtp
parentab0345b241133e894a326136b4b2a3b1f7e70e74 (diff)
downloadlibsrtp2-5cd58c0f7f9fe331df4061d7519372c2a1bbe656.tar.gz
Addressing code review comments
Diffstat (limited to 'srtp')
-rw-r--r--srtp/srtp.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/srtp/srtp.c b/srtp/srtp.c
index 1c5b5c2..3382600 100644
--- a/srtp/srtp.c
+++ b/srtp/srtp.c
@@ -225,6 +225,12 @@ srtp_stream_alloc(srtp_stream_ctx_t **str_ptr,
}
str->session_keys = (srtp_session_keys_t *)srtp_crypto_alloc(sizeof(srtp_session_keys_t) * str->num_master_keys);
+
+ if (str->session_keys == NULL) {
+ srtp_stream_free(str);
+ return srtp_err_status_alloc_fail;
+ }
+
memset(str->session_keys, 0, sizeof(srtp_session_keys_t) * str->num_master_keys);
for (i = 0; i < str->num_master_keys; i++) {
@@ -423,11 +429,11 @@ srtp_stream_dealloc(srtp_stream_ctx_t *stream, srtp_stream_ctx_t *stream_templat
/*
* zeroize the salt value
*/
- memset(session_keys->salt, 0, SRTP_AEAD_SALT_LEN);
- memset(session_keys->c_salt, 0, SRTP_AEAD_SALT_LEN);
+ octet_string_set_to_zero(session_keys->salt, SRTP_AEAD_SALT_LEN);
+ octet_string_set_to_zero(session_keys->c_salt, SRTP_AEAD_SALT_LEN);
if (session_keys->mki_id) {
- memset(session_keys->mki_id, 0, session_keys->mki_size);
+ octet_string_set_to_zero(session_keys->mki_id, session_keys->mki_size);
srtp_crypto_free(session_keys->mki_id);
session_keys->mki_id = NULL;
}
@@ -498,6 +504,12 @@ srtp_stream_clone(const srtp_stream_ctx_t *stream_template,
str->num_master_keys = stream_template->num_master_keys;
str->session_keys = (srtp_session_keys_t *)srtp_crypto_alloc(sizeof(srtp_session_keys_t) * str->num_master_keys);
+ if (str->session_keys == NULL) {
+ srtp_crypto_free(*str_ptr);
+ *str_ptr = NULL;
+ return srtp_err_status_alloc_fail;
+ }
+
for (i = 0; i < stream_template->num_master_keys; i++){
session_keys = &str->session_keys[i];
template_session_keys = &stream_template->session_keys[i];
@@ -1467,6 +1479,11 @@ srtp_get_session_keys(srtp_stream_ctx_t *stream, uint8_t* hdr, const unsigned in
tag_len = srtp_auth_get_tag_length(stream->session_keys[0].rtp_auth);
}
+ if (tag_len > base_mki_start_location) {
+ *mki_size = 0;
+ return NULL;
+ }
+
base_mki_start_location -= tag_len;
for (i = 0; i < stream->num_master_keys; i++) {