Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(502)

Side by Side Diff: srtp/srtp/srtp.c

Issue 1434033004: Update libsrtp to upstream commit be95365fbb4788b688cab7af61c65b7989055fb4 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libsrtp@master
Patch Set: Updated to libsrtp be95365fbb4788b688cab7af61c65b7989055fb4 Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « srtp/include/srtp.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * srtp.c 2 * srtp.c
3 * 3 *
4 * the secure real-time transport protocol 4 * the secure real-time transport protocol
5 * 5 *
6 * David A. McGrew 6 * David A. McGrew
7 * Cisco Systems, Inc. 7 * Cisco Systems, Inc.
8 */ 8 */
9 /* 9 /*
10 * 10 *
(...skipping 1059 matching lines...) Expand 10 before | Expand all | Expand 10 after
1070 * find starting point for decryption and length of data to be 1070 * find starting point for decryption and length of data to be
1071 * decrypted - the encrypted portion starts after the rtp header 1071 * decrypted - the encrypted portion starts after the rtp header
1072 * extension, if present; otherwise, it starts after the last csrc, 1072 * extension, if present; otherwise, it starts after the last csrc,
1073 * if any are present 1073 * if any are present
1074 */ 1074 */
1075 enc_start = (uint32_t*)hdr + uint32s_in_rtp_header + hdr->cc; 1075 enc_start = (uint32_t*)hdr + uint32s_in_rtp_header + hdr->cc;
1076 if (hdr->x == 1) { 1076 if (hdr->x == 1) {
1077 srtp_hdr_xtnd_t *xtn_hdr = (srtp_hdr_xtnd_t*)enc_start; 1077 srtp_hdr_xtnd_t *xtn_hdr = (srtp_hdr_xtnd_t*)enc_start;
1078 enc_start += (ntohs(xtn_hdr->length) + 1); 1078 enc_start += (ntohs(xtn_hdr->length) + 1);
1079 } 1079 }
1080 if (!((uint8_t*)enc_start < (uint8_t*)hdr + *pkt_octet_len)) 1080 if (!((uint8_t*)enc_start < (uint8_t*)hdr + (*pkt_octet_len - tag_len)))
1081 return err_status_parse_err; 1081 return err_status_parse_err;
1082 /* 1082 /*
1083 * We pass the tag down to the cipher when doing GCM mode 1083 * We pass the tag down to the cipher when doing GCM mode
1084 */ 1084 */
1085 enc_octet_len = (unsigned int)(*pkt_octet_len - 1085 enc_octet_len = (unsigned int)(*pkt_octet_len -
1086 ((uint8_t*)enc_start - (uint8_t*)hdr)); 1086 ((uint8_t*)enc_start - (uint8_t*)hdr));
1087 1087
1088 /* 1088 /*
1089 * Sanity check the encrypted payload length against 1089 * Sanity check the encrypted payload length against
1090 * the tag size. It must always be at least as large 1090 * the tag size. It must always be at least as large
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1300 * extension, if present; otherwise, it starts after the last csrc, 1300 * extension, if present; otherwise, it starts after the last csrc,
1301 * if any are present 1301 * if any are present
1302 * 1302 *
1303 * if we're not providing confidentiality, set enc_start to NULL 1303 * if we're not providing confidentiality, set enc_start to NULL
1304 */ 1304 */
1305 if (stream->rtp_services & sec_serv_conf) { 1305 if (stream->rtp_services & sec_serv_conf) {
1306 enc_start = (uint32_t *)hdr + uint32s_in_rtp_header + hdr->cc; 1306 enc_start = (uint32_t *)hdr + uint32s_in_rtp_header + hdr->cc;
1307 if (hdr->x == 1) { 1307 if (hdr->x == 1) {
1308 srtp_hdr_xtnd_t *xtn_hdr = (srtp_hdr_xtnd_t *)enc_start; 1308 srtp_hdr_xtnd_t *xtn_hdr = (srtp_hdr_xtnd_t *)enc_start;
1309 enc_start += (ntohs(xtn_hdr->length) + 1); 1309 enc_start += (ntohs(xtn_hdr->length) + 1);
1310 if (!((uint8_t*)enc_start < (uint8_t*)hdr + *pkt_octet_len))
1311 return err_status_parse_err;
1312 } 1310 }
1311 if (!((uint8_t*)enc_start < (uint8_t*)hdr + *pkt_octet_len))
1312 return err_status_parse_err;
1313 enc_octet_len = (unsigned int)(*pkt_octet_len - 1313 enc_octet_len = (unsigned int)(*pkt_octet_len -
1314 ((uint8_t*)enc_start - (uint8_t*)hdr)); 1314 ((uint8_t*)enc_start - (uint8_t*)hdr));
1315 } else { 1315 } else {
1316 enc_start = NULL; 1316 enc_start = NULL;
1317 } 1317 }
1318 1318
1319 /* 1319 /*
1320 * if we're providing authentication, set the auth_start and auth_tag 1320 * if we're providing authentication, set the auth_start and auth_tag
1321 * pointers to the proper locations; otherwise, set auth_start to NULL 1321 * pointers to the proper locations; otherwise, set auth_start to NULL
1322 * to indicate that no authentication is needed 1322 * to indicate that no authentication is needed
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
1588 * if any are present 1588 * if any are present
1589 * 1589 *
1590 * if we're not providing confidentiality, set enc_start to NULL 1590 * if we're not providing confidentiality, set enc_start to NULL
1591 */ 1591 */
1592 if (stream->rtp_services & sec_serv_conf) { 1592 if (stream->rtp_services & sec_serv_conf) {
1593 enc_start = (uint32_t *)hdr + uint32s_in_rtp_header + hdr->cc; 1593 enc_start = (uint32_t *)hdr + uint32s_in_rtp_header + hdr->cc;
1594 if (hdr->x == 1) { 1594 if (hdr->x == 1) {
1595 srtp_hdr_xtnd_t *xtn_hdr = (srtp_hdr_xtnd_t *)enc_start; 1595 srtp_hdr_xtnd_t *xtn_hdr = (srtp_hdr_xtnd_t *)enc_start;
1596 enc_start += (ntohs(xtn_hdr->length) + 1); 1596 enc_start += (ntohs(xtn_hdr->length) + 1);
1597 } 1597 }
1598 if (!((uint8_t*)enc_start < (uint8_t*)hdr + *pkt_octet_len)) 1598 if (!((uint8_t*)enc_start < (uint8_t*)hdr + (*pkt_octet_len - tag_len)))
1599 return err_status_parse_err; 1599 return err_status_parse_err;
1600 enc_octet_len = (uint32_t)(*pkt_octet_len - tag_len - 1600 enc_octet_len = (uint32_t)(*pkt_octet_len - tag_len -
1601 ((uint8_t*)enc_start - (uint8_t*)hdr)); 1601 ((uint8_t*)enc_start - (uint8_t*)hdr));
1602 } else { 1602 } else {
1603 enc_start = NULL; 1603 enc_start = NULL;
1604 } 1604 }
1605 1605
1606 /* 1606 /*
1607 * if we're providing authentication, set the auth_start and auth_tag 1607 * if we're providing authentication, set the auth_start and auth_tag
1608 * pointers to the proper locations; otherwise, set auth_start to NULL 1608 * pointers to the proper locations; otherwise, set auth_start to NULL
(...skipping 1607 matching lines...) Expand 10 before | Expand all | Expand 10 after
3216 break; 3216 break;
3217 case srtp_profile_aes256_cm_sha1_32: 3217 case srtp_profile_aes256_cm_sha1_32:
3218 return 14; 3218 return 14;
3219 break; 3219 break;
3220 /* the following profiles are not (yet) supported */ 3220 /* the following profiles are not (yet) supported */
3221 case srtp_profile_null_sha1_32: 3221 case srtp_profile_null_sha1_32:
3222 default: 3222 default:
3223 return 0; /* indicate error by returning a zero */ 3223 return 0; /* indicate error by returning a zero */
3224 } 3224 }
3225 } 3225 }
OLDNEW
« no previous file with comments | « srtp/include/srtp.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698