Browse Source

MT#63082 crypto: ignore dummy suites

If dummy definition with no tag, algo etc.
just ignore it, otherwise not excluded
and is dangling in outgoing SDP.

Also add according test.

Change-Id: Ib7c981ee66b1ce8cb363a9cc181231c68baa69cd
pull/1967/head
Donat Zenichev 5 months ago
parent
commit
fd763f2804
2 changed files with 43 additions and 3 deletions
  1. +8
    -3
      daemon/sdp.c
  2. +35
    -0
      t/auto-daemon-tests.pl

+ 8
- 3
daemon/sdp.c View File

@ -477,6 +477,11 @@ static bool parse_address(struct network_address *address) {
}
#define EXTRACT_TOKEN(field) do { if (!str_token_sep(&output->field, value_str, ' ')) return -1; } while (0)
#define EXTRACT_TOKEN_EXCL_INCORRECT(field) \
do { \
if (!str_token_sep(&output->field, value_str, ' ')) \
goto error; \
} while (0)
#define EXTRACT_NETWORK_ADDRESS_NP(field) \
do { EXTRACT_TOKEN(field.network_type); \
EXTRACT_TOKEN(field.address_type); \
@ -607,9 +612,9 @@ static int parse_attribute_crypto(struct sdp_attribute *output) {
output->attr = ATTR_CRYPTO;
PARSE_INIT;
EXTRACT_TOKEN(crypto.tag_str);
EXTRACT_TOKEN(crypto.crypto_suite_str);
EXTRACT_TOKEN(crypto.key_params_str);
EXTRACT_TOKEN_EXCL_INCORRECT(crypto.tag_str);
EXTRACT_TOKEN_EXCL_INCORRECT(crypto.crypto_suite_str);
EXTRACT_TOKEN_EXCL_INCORRECT(crypto.key_params_str);
c = &output->crypto;


+ 35
- 0
t/auto-daemon-tests.pl View File

@ -26040,6 +26040,41 @@ SDP
like($resp, qr/^Error reason: "Failed to parse SDP"/, 'invalid SDP parsing error');
new_call;
offer('Throw away dummy crypto', { DTLS => 'off' }, <<SDP);
v=0
o=- 1545997027 1 IN IP4 198.51.100.1
s=tester
t=0 0
m=audio 2000 RTP/SAVP 0
c=IN IP4 198.51.100.1
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:AIdPArobTMNWc5AHzFZhl31S/mYjUdLFjBHiHD2r|1:32
a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:l+ZCWtSLM0RvUvGhovOXXNxnJve4FOfL9ervJeYb|2:32
a=crypto:
----------------------------
v=0
o=- 1545997027 1 IN IP4 198.51.100.1
s=tester
t=0 0
m=audio PORT RTP/SAVP 0
c=IN IP4 203.0.113.1
a=rtpmap:0 PCMU/8000
a=sendrecv
a=rtcp:PORT
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:AIdPArobTMNWc5AHzFZhl31S/mYjUdLFjBHiHD2r|1:32
a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:l+ZCWtSLM0RvUvGhovOXXNxnJve4FOfL9ervJeYb|2:32
a=crypto:3 AEAD_AES_256_GCM inline:CRYPTO256S
a=crypto:4 AEAD_AES_128_GCM inline:CRYPTO128S
a=crypto:5 AES_256_CM_HMAC_SHA1_80 inline:CRYPTO256
a=crypto:6 AES_256_CM_HMAC_SHA1_32 inline:CRYPTO256
a=crypto:7 AES_192_CM_HMAC_SHA1_80 inline:CRYPTO192
a=crypto:8 AES_192_CM_HMAC_SHA1_32 inline:CRYPTO192
a=crypto:9 F8_128_HMAC_SHA1_80 inline:CRYPTO128
a=crypto:10 F8_128_HMAC_SHA1_32 inline:CRYPTO128
a=crypto:11 NULL_HMAC_SHA1_80 inline:CRYPTO128
a=crypto:12 NULL_HMAC_SHA1_32 inline:CRYPTO128
SDP
#done_testing;NGCP::Rtpengine::AutoTest::terminate('f00');exit;
done_testing();

Loading…
Cancel
Save