summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2015-10-23 09:45:48 +0000
committerNanang Izzuddin <nanang@teluu.com>2015-10-23 09:45:48 +0000
commite0749cce2d663cb5f817c244170d1bf69526f14a (patch)
treebca561373a03c88764d18057dad02aefc233b54f
parent26931a60da8b7056a1af7534e6aa3db0aa3b6121 (diff)
Misc (re #1882): Added array length check before inserting parsed bandwidth & attribute info to SDP structure (thanks Fredrik Hansson for the patch).
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5190 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/src/pjmedia/sdp.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/pjmedia/src/pjmedia/sdp.c b/pjmedia/src/pjmedia/sdp.c
index 5ab7e943..661d9a95 100644
--- a/pjmedia/src/pjmedia/sdp.c
+++ b/pjmedia/src/pjmedia/sdp.c
@@ -1242,9 +1242,19 @@ PJ_DEF(pj_status_t) pjmedia_sdp_parse( pj_pool_t *pool,
attr = parse_attr(pool, &scanner, &ctx);
if (attr) {
if (media) {
- pjmedia_sdp_media_add_attr(media, attr);
+ if (media->attr_count < PJMEDIA_MAX_SDP_ATTR)
+ pjmedia_sdp_media_add_attr(media, attr);
+ else
+ PJ_PERROR(2, (THIS_FILE, PJ_ETOOMANY,
+ "Error adding media attribute, "
+ "attribute is ignored"));
} else {
- pjmedia_sdp_session_add_attr(session, attr);
+ if (session->attr_count < PJMEDIA_MAX_SDP_ATTR)
+ pjmedia_sdp_session_add_attr(session, attr);
+ else
+ PJ_PERROR(2, (THIS_FILE, PJ_ETOOMANY,
+ "Error adding session attribute"
+ ", attribute is ignored"));
}
}
break;
@@ -1294,9 +1304,19 @@ PJ_DEF(pj_status_t) pjmedia_sdp_parse( pj_pool_t *pool,
bandw = PJ_POOL_ZALLOC_T(pool, pjmedia_sdp_bandw);
parse_bandwidth_info(&scanner, bandw, &ctx);
if (media) {
- media->bandw[media->bandw_count++] = bandw;
+ if (media->bandw_count < PJMEDIA_MAX_SDP_BANDW)
+ media->bandw[media->bandw_count++] = bandw;
+ else
+ PJ_PERROR(2, (THIS_FILE, PJ_ETOOMANY,
+ "Error adding media bandwidth "
+ "info, info is ignored"));
} else {
- session->bandw[session->bandw_count++] = bandw;
+ if (session->bandw_count < PJMEDIA_MAX_SDP_BANDW)
+ session->bandw[session->bandw_count++] = bandw;
+ else
+ PJ_PERROR(2, (THIS_FILE, PJ_ETOOMANY,
+ "Error adding session bandwidth "
+ "info, info is ignored"));
}
break;
default: