diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2015-10-23 09:45:48 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2015-10-23 09:45:48 +0000 |
commit | e0749cce2d663cb5f817c244170d1bf69526f14a (patch) | |
tree | bca561373a03c88764d18057dad02aefc233b54f | |
parent | 26931a60da8b7056a1af7534e6aa3db0aa3b6121 (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.c | 28 |
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: |