Date: Friday, February 7, 2014 @ 00:18:56 Author: eric Revision: 205551
upgpkg: libsrtp 15.1c9bd90-3 Add security fix (close FS#38422) Added: libsrtp/trunk/7713d5706524f9f1ee94fd6b55125357e63656d5.patch Modified: libsrtp/trunk/PKGBUILD ------------------------------------------------+ 7713d5706524f9f1ee94fd6b55125357e63656d5.patch | 116 +++++++++++++++++++++++ PKGBUILD | 12 +- 2 files changed, 125 insertions(+), 3 deletions(-) Added: 7713d5706524f9f1ee94fd6b55125357e63656d5.patch =================================================================== --- 7713d5706524f9f1ee94fd6b55125357e63656d5.patch (rev 0) +++ 7713d5706524f9f1ee94fd6b55125357e63656d5.patch 2014-02-06 23:18:56 UTC (rev 205551) @@ -0,0 +1,116 @@ +From 8884f4d8eb4ca7122dfcbd640b933b98ef4bab80 Mon Sep 17 00:00:00 2001 +From: jfigus <[email protected]> +Date: Thu, 30 May 2013 12:36:07 -0400 +Subject: [PATCH 1/3] Remove double-invocations to prevent buffer-overflow + vulnerability. + +--- + srtp/srtp.c | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/srtp/srtp.c b/srtp/srtp.c +index 839c1ee..41e263c 100644 +--- a/srtp/srtp.c ++++ b/srtp/srtp.c +@@ -2063,23 +2063,18 @@ static inline int base_key_length(const cipher_type_t *cipher, int key_length) + switch(profile) { + case srtp_profile_aes128_cm_sha1_80: + crypto_policy_set_aes_cm_128_hmac_sha1_80(policy); +- crypto_policy_set_aes_cm_128_hmac_sha1_80(policy); + break; + case srtp_profile_aes128_cm_sha1_32: + crypto_policy_set_aes_cm_128_hmac_sha1_32(policy); +- crypto_policy_set_aes_cm_128_hmac_sha1_80(policy); + break; + case srtp_profile_null_sha1_80: + crypto_policy_set_null_cipher_hmac_sha1_80(policy); +- crypto_policy_set_null_cipher_hmac_sha1_80(policy); + break; + case srtp_profile_aes256_cm_sha1_80: + crypto_policy_set_aes_cm_256_hmac_sha1_80(policy); +- crypto_policy_set_aes_cm_256_hmac_sha1_80(policy); + break; + case srtp_profile_aes256_cm_sha1_32: + crypto_policy_set_aes_cm_256_hmac_sha1_32(policy); +- crypto_policy_set_aes_cm_256_hmac_sha1_80(policy); + break; + /* the following profiles are not (yet) supported */ + case srtp_profile_null_sha1_32: +-- +1.8.5.1 + + +From 8e47faf0f5b90672c7ebf2f0cf0562ee81a8b621 Mon Sep 17 00:00:00 2001 +From: jfigus <[email protected]> +Date: Thu, 30 May 2013 13:36:33 -0400 +Subject: [PATCH 2/3] Fix 32-bit tag policies to use correct profile. + +--- + srtp/srtp.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/srtp/srtp.c b/srtp/srtp.c +index 41e263c..95c1ab4 100644 +--- a/srtp/srtp.c ++++ b/srtp/srtp.c +@@ -2095,7 +2095,7 @@ static inline int base_key_length(const cipher_type_t *cipher, int key_length) + crypto_policy_set_aes_cm_128_hmac_sha1_80(policy); + break; + case srtp_profile_aes128_cm_sha1_32: +- crypto_policy_set_aes_cm_128_hmac_sha1_80(policy); ++ crypto_policy_set_aes_cm_128_hmac_sha1_32(policy); + break; + case srtp_profile_null_sha1_80: + crypto_policy_set_null_cipher_hmac_sha1_80(policy); +@@ -2104,7 +2104,7 @@ static inline int base_key_length(const cipher_type_t *cipher, int key_length) + crypto_policy_set_aes_cm_256_hmac_sha1_80(policy); + break; + case srtp_profile_aes256_cm_sha1_32: +- crypto_policy_set_aes_cm_256_hmac_sha1_80(policy); ++ crypto_policy_set_aes_cm_256_hmac_sha1_32(policy); + break; + /* the following profiles are not (yet) supported */ + case srtp_profile_null_sha1_32: +-- +1.8.5.1 + + +From 0acbb039c12b790621839facf56bfedbd071b74d Mon Sep 17 00:00:00 2001 +From: jfigus <[email protected]> +Date: Thu, 30 May 2013 16:47:02 -0400 +Subject: [PATCH 3/3] Undo the changes to the RTCP profile helper function. + The prior commit was not compliant with RFC 3711. + +--- + srtp/srtp.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/srtp/srtp.c b/srtp/srtp.c +index 95c1ab4..7fd19e6 100644 +--- a/srtp/srtp.c ++++ b/srtp/srtp.c +@@ -2095,7 +2095,9 @@ static inline int base_key_length(const cipher_type_t *cipher, int key_length) + crypto_policy_set_aes_cm_128_hmac_sha1_80(policy); + break; + case srtp_profile_aes128_cm_sha1_32: +- crypto_policy_set_aes_cm_128_hmac_sha1_32(policy); ++ /* We do not honor the 32-bit auth tag request since ++ * this is not compliant with RFC 3711 */ ++ crypto_policy_set_aes_cm_128_hmac_sha1_80(policy); + break; + case srtp_profile_null_sha1_80: + crypto_policy_set_null_cipher_hmac_sha1_80(policy); +@@ -2104,7 +2106,9 @@ static inline int base_key_length(const cipher_type_t *cipher, int key_length) + crypto_policy_set_aes_cm_256_hmac_sha1_80(policy); + break; + case srtp_profile_aes256_cm_sha1_32: +- crypto_policy_set_aes_cm_256_hmac_sha1_32(policy); ++ /* We do not honor the 32-bit auth tag request since ++ * this is not compliant with RFC 3711 */ ++ crypto_policy_set_aes_cm_256_hmac_sha1_80(policy); + break; + /* the following profiles are not (yet) supported */ + case srtp_profile_null_sha1_32: +-- +1.8.5.1 + Modified: PKGBUILD =================================================================== --- PKGBUILD 2014-02-06 22:57:07 UTC (rev 205550) +++ PKGBUILD 2014-02-06 23:18:56 UTC (rev 205551) @@ -6,7 +6,7 @@ pkgname=libsrtp pkgver=15.1c9bd90 -pkgrel=2 +pkgrel=3 pkgdesc="Open-source implementation of the Secure Real-time Transport Protocol (SRTP)" url="http://srtp.sourceforge.net/srtp.html" arch=('i686' 'x86_64') @@ -13,8 +13,9 @@ license=('BSD') depends=('glibc') makedepends=('git') -source=("git://git.linphone.org/srtp.git#commit=1c9bd90") -md5sums=('SKIP') +source=("git://git.linphone.org/srtp.git#commit=1c9bd90" 7713d5706524f9f1ee94fd6b55125357e63656d5.patch) +md5sums=('SKIP' + '33b3ba860560a4d9dee244caf73eceef') pkgver() { cd srtp @@ -21,6 +22,11 @@ echo $(git rev-list --count HEAD).$(git rev-parse --short HEAD) } +prepare() { + cd srtp + patch -p1 -i ../7713d5706524f9f1ee94fd6b55125357e63656d5.patch +} + build() { cd srtp autoconf
