From 3db2c5dbb991bba592893535a2d81d2df3e5eb93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B8=D0=BB=D1=8F=D0=BD=20=D0=9F=D0=B0=D0=BB=D0=B0?= =?UTF-8?q?=D1=83=D0=B7=D0=BE=D0=B2?= Date: Sat, 11 Feb 2023 21:42:21 +0200 Subject: [PATCH] srtp-utils: Add implicit padding characters explicitly Otherwise base64 decoding will give us a wrong key. --- plugins/provider/sip/calls-srtp-utils.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/plugins/provider/sip/calls-srtp-utils.c b/plugins/provider/sip/calls-srtp-utils.c index ba7ac10..b2ff3c2 100644 --- a/plugins/provider/sip/calls-srtp-utils.c +++ b/plugins/provider/sip/calls-srtp-utils.c @@ -405,7 +405,20 @@ calls_srtp_parse_sdp_crypto_attribute (const char *attribute, n_key_infos = g_strv_length (key_info_fields); - key_param->b64_keysalt = g_strdup (key_info_fields[0]); + switch (strlen (key_info_fields[0]) % 4) { + case 3: + key_param->b64_keysalt = g_strconcat (key_info_fields[0], "=", NULL); + break; + case 2: + key_param->b64_keysalt = g_strconcat (key_info_fields[0], "==", NULL); + break; + case 1: + g_assert_not_reached (); /* impossible with base64 */ + break; + case 0: + default: + key_param->b64_keysalt = g_strdup (key_info_fields[0]); + } if (n_key_infos == 1) { key_info_lifetime_index = 0;