pjproject: add patch for AST-2021-005
authorSebastian Kemper <sebastian_ml@gmx.net>
Sun, 7 Mar 2021 10:04:44 +0000 (11:04 +0100)
committerSebastian Kemper <sebastian_ml@gmx.net>
Sun, 7 Mar 2021 10:06:26 +0000 (11:06 +0100)
https://downloads.asterisk.org/pub/security/AST-2021-005.html
https://issues.asterisk.org/jira/browse/ASTERISK-29196

Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
libs/pjproject/Makefile
libs/pjproject/patches/240-fix-sdp-neg-modify-local-offer.patch [new file with mode: 0644]

index 69c0fa4583da9ef4db86f545b98019c712e7ff8b..c204ed0e19c7677a27c436e5692a10cc04b98b46 100644 (file)
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pjproject
 PKG_VERSION:=2.8
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=pjproject-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=http://www.pjsip.org/release/$(PKG_VERSION)
diff --git a/libs/pjproject/patches/240-fix-sdp-neg-modify-local-offer.patch b/libs/pjproject/patches/240-fix-sdp-neg-modify-local-offer.patch
new file mode 100644 (file)
index 0000000..c27a489
--- /dev/null
@@ -0,0 +1,33 @@
+diff --git a/pjmedia/src/pjmedia/sdp_neg.c b/pjmedia/src/pjmedia/sdp_neg.c
+index 3b85b4273..a14009662 100644
+--- a/pjmedia/src/pjmedia/sdp_neg.c
++++ b/pjmedia/src/pjmedia/sdp_neg.c
+@@ -304,7 +304,6 @@ PJ_DEF(pj_status_t) pjmedia_sdp_neg_modify_local_offer2(
+ {
+     pjmedia_sdp_session *new_offer;
+     pjmedia_sdp_session *old_offer;
+-    char media_used[PJMEDIA_MAX_SDP_MEDIA];
+     unsigned oi; /* old offer media index */
+     pj_status_t status;
+@@ -323,8 +322,19 @@ PJ_DEF(pj_status_t) pjmedia_sdp_neg_modify_local_offer2(
+     /* Change state to STATE_LOCAL_OFFER */
+     neg->state = PJMEDIA_SDP_NEG_STATE_LOCAL_OFFER;
++    /* When there is no active local SDP in state PJMEDIA_SDP_NEG_STATE_DONE,
++     * it means that the previous initial SDP nego must have been failed,
++     * so we'll just set the local SDP offer here.
++     */
++    if (!neg->active_local_sdp) {
++      neg->initial_sdp_tmp = NULL;
++      neg->initial_sdp = pjmedia_sdp_session_clone(pool, local);
++      neg->neg_local_sdp = pjmedia_sdp_session_clone(pool, local);
++
++      return PJ_SUCCESS;
++    }
++
+     /* Init vars */
+-    pj_bzero(media_used, sizeof(media_used));
+     old_offer = neg->active_local_sdp;
+     new_offer = pjmedia_sdp_session_clone(pool, local);