summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2009-06-24 16:00:36 +0000
committerNanang Izzuddin <nanang@teluu.com>2009-06-24 16:00:36 +0000
commit62cda870bf3188a6246277d28543daabb97daf0e (patch)
tree2eb74b07dbc72e81510bfe1fee4f4673de2c295b
parent8e813753cd991fec756008301f8aada1a5e3ecee (diff)
Ticket #903: backported changes from ticket #862
git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.0@2794 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/src/pjmedia/transport_srtp.c16
-rw-r--r--tests/pjsua/scripts-sendto/300_srtp_receive_crypto_tag_zero.py (renamed from tests/pjsua/scripts-sendto/300_srtp_invalid_crypto_tag_zero.py)4
2 files changed, 16 insertions, 4 deletions
diff --git a/pjmedia/src/pjmedia/transport_srtp.c b/pjmedia/src/pjmedia/transport_srtp.c
index d46d4fc0..999e65c1 100644
--- a/pjmedia/src/pjmedia/transport_srtp.c
+++ b/pjmedia/src/pjmedia/transport_srtp.c
@@ -22,6 +22,7 @@
#include <pjmedia/endpoint.h>
#include <pjlib-util/base64.h>
#include <pj/assert.h>
+#include <pj/ctype.h>
#include <pj/lock.h>
#include <pj/log.h>
#include <pj/os.h>
@@ -979,6 +980,7 @@ static pj_status_t parse_attr_crypto(pj_pool_t *pool,
{
pj_str_t input;
char *token;
+ int token_len;
pj_str_t tmp;
pj_status_t status;
int itmp;
@@ -992,10 +994,20 @@ static pj_status_t parse_attr_crypto(pj_pool_t *pool,
PJ_LOG(4,(THIS_FILE, "Attribute crypto expecting tag"));
return PJMEDIA_SDP_EINATTR;
}
- *tag = atoi(token);
- if (*tag == 0)
+ token_len = pj_ansi_strlen(token);
+
+ /* Tag must not use leading zeroes. */
+ if (token_len > 1 && *token == '0')
return PJMEDIA_SDP_EINATTR;
+ /* Tag must be decimal, i.e: contains only digit '0'-'9'. */
+ for (itmp = 0; itmp < token_len; ++itmp)
+ if (!pj_isdigit(token[itmp]))
+ return PJMEDIA_SDP_EINATTR;
+
+ /* Get tag value. */
+ *tag = atoi(token);
+
/* Crypto-suite */
token = strtok(NULL, " ");
if (!token) {
diff --git a/tests/pjsua/scripts-sendto/300_srtp_invalid_crypto_tag_zero.py b/tests/pjsua/scripts-sendto/300_srtp_receive_crypto_tag_zero.py
index 51e95d68..7e4e5499 100644
--- a/tests/pjsua/scripts-sendto/300_srtp_invalid_crypto_tag_zero.py
+++ b/tests/pjsua/scripts-sendto/300_srtp_receive_crypto_tag_zero.py
@@ -21,6 +21,6 @@ args = "--null-audio --auto-answer 200 --max-calls 1 --use-srtp 1 --srtp-secure
include = []
exclude = []
-sendto_cfg = sip.SendtoCfg( "caller has used invalid crypto tag (zero), callee must not accept the call",
- pjsua_args=args, sdp=sdp, resp_code=406,
+sendto_cfg = sip.SendtoCfg( "caller has used crypto tag zero, callee must accept the call",
+ pjsua_args=args, sdp=sdp, resp_code=200,
resp_inc=include, resp_exc=exclude)