Module: sems Branch: 1.4 Commit: a10771c60341daa2bd8008c25de012ed51b45c7d URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=a10771c60341daa2bd8008c25de012ed51b45c7d
Author: Stefan Sayer <[email protected]> Committer: Stefan Sayer <[email protected]> Date: Mon May 14 15:55:49 2012 +0200 b/f: fix false positive matching keys with prefixes in get_header_keyvalue e.g. P-App-Param: prefixmykey=myprefixval;mykey=myval would not work with mykey. int bug #59 --- core/AmUtils.cpp | 2 ++ core/tests/test_headers.cpp | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/AmUtils.cpp b/core/AmUtils.cpp index f9b59e7..90a2070 100644 --- a/core/AmUtils.cpp +++ b/core/AmUtils.cpp @@ -819,6 +819,8 @@ string get_header_keyvalue_single(const string& param_hdr, const string& name) { st = ST_CMPKEY; k_begin = p; corr = 1; + } else { + st = ST_FINDBGN; } } } break; diff --git a/core/tests/test_headers.cpp b/core/tests/test_headers.cpp index e1790ee..6ee83d7 100644 --- a/core/tests/test_headers.cpp +++ b/core/tests/test_headers.cpp @@ -34,8 +34,8 @@ FCTMF_SUITE_BGN(test_headers) { } FCT_TEST_END(); FCT_TEST_BGN(getHeader_keyvalue) { - fct_chk(get_header_keyvalue("mykey=myval;myotherkey=myval", "mykey") == "myval"); - fct_chk(get_header_keyvalue("mykey=myval;myotherkey=myval", "myotherkey") == "myval"); + fct_chk(get_header_keyvalue("mykey=myval;myotherkey=myotherval", "mykey") == "myval"); + fct_chk(get_header_keyvalue("mykey=myval1;myotherkey=myval", "myotherkey") == "myval"); fct_chk(get_header_keyvalue("mykey=myval;myotherkey=", "myotherkey") == ""); fct_chk(get_header_keyvalue(getHeader("P-My-Test: mykey=myval;myotherfunkykey=myval" CRLF, "P-My-Test", true), "mykey") == "myval" ); @@ -57,7 +57,13 @@ FCTMF_SUITE_BGN(test_headers) { fct_chk(get_header_keyvalue(getHeader("P-My-Test: mykey=myval; myotherfunkykey= 'test \\' escaped';andsomemore", "P-My-Test", true), "test \\' escaped") == ""); fct_chk(get_header_keyvalue("u=sayer;d=iptel.org;p=abcdef", "u") == "sayer"); fct_chk(get_header_keyvalue("u=sayer;d=iptel.org;p=abcdef", "d") == "iptel.org"); - } FCT_TEST_END(); + + fct_chk(get_header_keyvalue("prefixmykey=myprefixval;mykey=myval", "mykey") == "myval"); + fct_chk(get_header_keyvalue("some=other;prefixmykey=myprefixval;mykey=myval", "mykey") == "myval"); + fct_chk(get_header_keyvalue("some=\"mykey\";prefixmykey=myprefixval;mykey=myval", "mykey") == "myval"); + fct_chk(get_header_keyvalue("some=\"mykey=valx\";prefixmykey=myprefixval;mykey=myval", "mykey") == "myval"); + + } FCT_TEST_END(); FCT_TEST_BGN(getHeader_allow) { _______________________________________________ Semsdev mailing list [email protected] http://lists.iptel.org/mailman/listinfo/semsdev
