Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package belle-sip for openSUSE:Factory checked in at 2021-11-28 21:30:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/belle-sip (Old)
and /work/SRC/openSUSE:Factory/.belle-sip.new.1895 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "belle-sip"
Sun Nov 28 21:30:10 2021 rev:22 rq:934338 version:5.0.53
Changes:
--------
--- /work/SRC/openSUSE:Factory/belle-sip/belle-sip.changes 2021-11-17 01:14:15.606172235 +0100
+++ /work/SRC/openSUSE:Factory/.belle-sip.new.1895/belle-sip.changes 2021-11-28 21:31:02.185898121 +0100
@@ -1,0 +2,7 @@
+Sun Nov 21 01:41:39 UTC 2021 - Giacomo Comes - 5.0.53
+
+- Update to version 5.0.53:
+ * Fix a crash when receiving parsing a rtcp-fb attribute with just
+ fb-id but no value
+
+-------------------------------------------------------------------
Old:
----
belle-sip-5.0.49.tar.bz2
New:
----
belle-sip-5.0.53.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ belle-sip.spec ++++++
--- /var/tmp/diff_new_pack.B43X2n/_old 2021-11-28 21:31:02.669896574 +0100
+++ /var/tmp/diff_new_pack.B43X2n/_new 2021-11-28 21:31:02.669896574 +0100
@@ -20,7 +20,7 @@
%define soname libbellesip
%define sover 1
Name: belle-sip
-Version: 5.0.49
+Version: 5.0.53
Release: 0
Summary: C object-oriented SIP Stack
License: GPL-2.0-or-later
++++++ belle-sip-5.0.49.tar.bz2 -> belle-sip-5.0.53.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/belle-sip-5.0.49/src/belle_sdp_impl.cc new/belle-sip-5.0.53/src/belle_sdp_impl.cc
--- old/belle-sip-5.0.49/src/belle_sdp_impl.cc 2021-10-28 17:25:53.000000000 +0200
+++ new/belle-sip-5.0.53/src/belle_sdp_impl.cc 2021-11-11 00:42:01.000000000 +0100
@@ -58,7 +58,14 @@
};
static struct attribute_name_func_pair attribute_table[] = {
{ "rtcp-fb", (attribute_parse_func)belle_sdp_rtcp_fb_attribute_parse },
- { "rtcp-xr", (attribute_parse_func)belle_sdp_rtcp_xr_attribute_parse }
+ { "rtcp-xr", (attribute_parse_func)belle_sdp_rtcp_xr_attribute_parse },
+ { "creq", (attribute_parse_func)belle_sdp_creq_attribute_parse },
+ { "csup", (attribute_parse_func)belle_sdp_csup_attribute_parse },
+ { "tcap", (attribute_parse_func)belle_sdp_tcap_attribute_parse },
+ { "acap", (attribute_parse_func)belle_sdp_acap_attribute_parse },
+ { "csup", (attribute_parse_func)belle_sdp_csup_attribute_parse },
+ { "acfg", (attribute_parse_func)belle_sdp_acfg_attribute_parse },
+ { "pcfg", (attribute_parse_func)belle_sdp_pcfg_attribute_parse }
};
struct _belle_sdp_attribute {
belle_sip_object_t base;
@@ -1070,7 +1077,30 @@
belle_sdp_raw_attribute_set_value(attribute,value);
base_description->attributes = belle_sip_list_append(base_description->attributes,belle_sip_object_ref(attribute));
}
+
+#define SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute_ptr, attribute_name, attribute_type)\
+ (strcmp((attribute_ptr)->name, attribute_name) == 0 && !BELLE_SIP_IS_INSTANCE_OF(attribute_ptr, attribute_type))
+
+
void belle_sdp_base_description_add_attribute(belle_sdp_base_description_t* base_description, belle_sdp_attribute_t* attribute) {
+ /* Sanity check to avoid specialized attributes to be parsed as raw attribute as a fallback.
+ * The application code will be confused not to be able to cast the attribute in its specialized type.
+ */
+ if (SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "rtcp-fb", belle_sdp_rtcp_fb_attribute_t)
+ || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "rtcp-xr", belle_sdp_rtcp_xr_attribute_t)
+ || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "creq", belle_sdp_creq_attribute_t)
+ || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "csup", belle_sdp_csup_attribute_t)
+ || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "tcap", belle_sdp_tcap_attribute_t)
+ || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "acap", belle_sdp_acap_attribute_t)
+ || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "csup", belle_sdp_csup_attribute_t)
+ || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "acfg", belle_sdp_acfg_attribute_t)
+ || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "pcfg", belle_sdp_pcfg_attribute_t)
+ ){
+ belle_sip_error("Erroneously parsed attribute with name [%s] and value [%s], skipped",
+ belle_sdp_attribute_get_name(attribute), belle_sdp_attribute_get_value(attribute));
+ belle_sip_object_unref(attribute);
+ return;
+ }
base_description->attributes = belle_sip_list_append(base_description->attributes,(void*)belle_sip_object_ref(BELLE_SIP_OBJECT(attribute)));
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/belle-sip-5.0.49/src/sdp/sdp.txt new/belle-sip-5.0.53/src/sdp/sdp.txt
--- old/belle-sip-5.0.49/src/sdp/sdp.txt 2021-10-28 17:25:53.000000000 +0200
+++ new/belle-sip-5.0.53/src/sdp/sdp.txt 2021-11-11 00:42:01.000000000 +0100
@@ -339,6 +339,7 @@
/ rtcp-fb-trr-int-type SP rtcp-fb-trr-int
/ rtcp-fb-ccm-type SP rtcp-fb-ccm-param
/ rtcp-fb-id rtcp-fb-param
+ / rtcp-fb-id ;no or empty param
rtcp-fb-trr-int-type = "trr-int"
rtcp-fb-trr-int = 1*DIGIT
@@ -358,7 +359,6 @@
rtcp-fb-param = SP "app" [SP byte-string]
/ SP token [SP byte-string]
/ rtcp-fb-trr-int
- / text; empty
rtcp-fb-ack-type = "ack"
rtcp-fb-ack-param = SP "rpsi"
Binary files old/belle-sip-5.0.49/src/sdp/sdp_grammar and new/belle-sip-5.0.53/src/sdp/sdp_grammar differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/belle-sip-5.0.49/tester/belle_sdp_tester.c new/belle-sip-5.0.53/tester/belle_sdp_tester.c
--- old/belle-sip-5.0.49/tester/belle_sdp_tester.c 2021-10-28 17:25:53.000000000 +0200
+++ new/belle-sip-5.0.53/tester/belle_sdp_tester.c 2021-11-11 00:42:01.000000000 +0100
@@ -885,6 +885,30 @@
return;
}
+static const char* sdp_with_invalid_rtcp_fb = "v=0\r\n"\
+ "o=jehan-mac 1239 1239 IN IP6 2a01:e35:1387:1020:6233:4bff:fe0b:5663\r\n"\
+ "s=SIP Talk\r\n"\
+ "c=IN IP4 192.168.0.18\r\n"\
+ "b=AS:380\r\n"\
+ "t=0 0\r\n"\
+ "a=ice-pwd:31ec21eb38b2ec6d36e8dc7b\r\n"\
+ "m=audio 7078 RTP/AVP 111 110 3 0 8 101\r\n"\
+ "a=rtcp-fb\r\n"\
+ "a=rtpmap:111 speex/16000\r\n";
+
+static void test_session_description_with_invalid_rtcp_fb(void) {
+ const char* l_src = sdp_with_invalid_rtcp_fb;
+ belle_sip_list_t* media_descriptions;
+ belle_sdp_media_description_t *media_description;
+ belle_sdp_session_description_t* l_session_description = belle_sdp_session_description_parse(l_src);
+ /* make sure that the invalid rtcp-fb is not parsed as a raw attribute. */
+ media_descriptions = belle_sdp_session_description_get_media_descriptions(l_session_description);
+ media_description = (belle_sdp_media_description_t*) media_descriptions->data;
+ BC_ASSERT_PTR_NULL(belle_sdp_media_description_get_attribute(media_description, "rtcp-fb"));
+ belle_sip_object_unref(l_session_description);
+}
+
+
static void test_overflow(void){
belle_sdp_session_description_t* sdp;
belle_sip_list_t *mds;
@@ -1065,7 +1089,8 @@
TEST_NO_TAG("Session description with capability reference before definition", test_session_description_with_capability_referenced_before_definition),
TEST_NO_TAG("Session description", test_session_description),
TEST_NO_TAG("Session description for fax", test_image_mline),
- TEST_NO_TAG("Marshal buffer overflow", test_overflow)
+ TEST_NO_TAG("Marshal buffer overflow", test_overflow),
+ TEST_NO_TAG("Invalid specialized attribute not parsed as raw attribute", test_session_description_with_invalid_rtcp_fb)
};
test_suite_t sdp_test_suite = {"SDP", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each,