SDP: return error on offset bigger than atribute length
Test: none
Bug: 79217770
Change-Id: I8b594882dd07644b1a747c53d6166db466b7e998
Merged-In: I8b594882dd07644b1a747c53d6166db466b7e998
(cherry picked from commit 3565eaf72d810688bf91f75002da1f25039996df)
diff --git a/stack/sdp/sdp_server.c b/stack/sdp/sdp_server.c
index f3794d4..a1c0526 100644
--- a/stack/sdp/sdp_server.c
+++ b/stack/sdp/sdp_server.c
@@ -441,6 +441,14 @@
/* if there is a partial attribute pending to be sent */
if (p_ccb->cont_info.attr_offset)
{
+ if (attr_len < p_ccb->cont_info.attr_offset)
+ {
+ android_errorWriteLog(0x534e4554, "79217770");
+ SDP_TRACE_ERROR("offset is bigger than attribute length");
+ sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
+ SDP_TEXT_BAD_CONT_LEN);
+ return;
+ }
p_rsp = sdpu_build_partial_attrib_entry (p_rsp, p_attr, rem_len,
&p_ccb->cont_info.attr_offset);
@@ -693,6 +701,14 @@
/* if there is a partial attribute pending to be sent */
if (p_ccb->cont_info.attr_offset)
{
+ if (attr_len < p_ccb->cont_info.attr_offset)
+ {
+ android_errorWriteLog(0x534e4554, "79217770");
+ SDP_TRACE_ERROR("offset is bigger than attribute length");
+ sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
+ SDP_TEXT_BAD_CONT_LEN);
+ return;
+ }
p_rsp = sdpu_build_partial_attrib_entry (p_rsp, p_attr, rem_len,
&p_ccb->cont_info.attr_offset);