Module: kamailio
Branch: master
Commit: f66bbb5b6da13ad627bf0c8ee50bdbad9c93b43c
URL: 
https://github.com/kamailio/kamailio/commit/f66bbb5b6da13ad627bf0c8ee50bdbad9c93b43c

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2018-07-09T08:54:47+02:00

sanity: allow vars in params

---

Modified: src/modules/sanity/sanity_mod.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/f66bbb5b6da13ad627bf0c8ee50bdbad9c93b43c.diff
Patch: 
https://github.com/kamailio/kamailio/commit/f66bbb5b6da13ad627bf0c8ee50bdbad9c93b43c.patch

---

diff --git a/src/modules/sanity/sanity_mod.c b/src/modules/sanity/sanity_mod.c
index a425da7646..6d8de764bc 100644
--- a/src/modules/sanity/sanity_mod.c
+++ b/src/modules/sanity/sanity_mod.c
@@ -27,6 +27,7 @@
 #include "../../core/sr_module.h"
 #include "../../core/ut.h"
 #include "../../core/error.h"
+#include "../../core/mod_fix.h"
 #include "../../core/kemi.h"
 
 MODULE_VERSION
@@ -44,8 +45,7 @@ strl* proxyrequire_list = NULL;
 sl_api_t slb;
 
 static int mod_init(void);
-static int sanity_fixup(void** param, int param_no);
-static int w_sanity_check(struct sip_msg* _msg, char* _foo, char* _bar);
+static int w_sanity_check(sip_msg_t* _msg, char* _msg_check, char* _uri_check);
 static int bind_sanity(sanity_api_t* api);
 
 /*
@@ -54,9 +54,9 @@ static int bind_sanity(sanity_api_t* api);
 static cmd_export_t cmds[] = {
        {"sanity_check", (cmd_function)w_sanity_check, 0, 0,
                REQUEST_ROUTE|ONREPLY_ROUTE},
-       {"sanity_check", (cmd_function)w_sanity_check, 1, sanity_fixup,
+       {"sanity_check", (cmd_function)w_sanity_check, 1, fixup_igp_null,
                REQUEST_ROUTE|ONREPLY_ROUTE},
-       {"sanity_check", (cmd_function)w_sanity_check, 2, sanity_fixup,
+       {"sanity_check", (cmd_function)w_sanity_check, 2, fixup_igp_igp,
                REQUEST_ROUTE|ONREPLY_ROUTE},
        {"bind_sanity",  (cmd_function)bind_sanity,    0, 0, 0},
        {0, 0, 0, 0}
@@ -116,40 +116,6 @@ static int mod_init(void) {
        return 0;
 }
 
-static int sanity_fixup(void** param, int param_no) {
-       int checks;
-       str in;
-
-       if (param_no == 1) {
-               in.s = (char*)*param;
-               in.len = strlen(in.s);
-               if (str2int(&in, (unsigned int*)&checks) < 0) {
-                       LM_ERR("failed to convert input integer\n");
-                       return E_UNSPEC;
-               }
-               if ((checks < 1) || (checks >= (SANITY_MAX_CHECKS))) {
-                       LM_ERR("input parameter (%i) outside of valid range 
<1-%i)\n",
-                                       checks, SANITY_MAX_CHECKS);
-                       return E_UNSPEC;
-               }
-               *param = (void*)(long)checks;
-       }
-       if (param_no == 2) {
-               in.s = (char*)*param;
-               in.len = strlen(in.s);
-               if (str2int(&in, (unsigned int*)&checks) < 0) {
-                       LM_ERR("failed to convert second integer argument\n");
-                       return E_UNSPEC;
-               }
-               if ((checks < 1) || (checks >= (SANITY_URI_MAX_CHECKS))) {
-                       LM_ERR("second input parameter (%i) outside of valid 
range <1-%i\n",
-                                       checks, SANITY_URI_MAX_CHECKS);
-                       return E_UNSPEC;
-               }
-               *param = (void*)(long)checks;
-       }
-       return 0;
-}
 
 /**
  * perform SIP message sanity check
@@ -236,23 +202,39 @@ int sanity_check_defaults(struct sip_msg* msg)
 /**
  * wrapper for sanity_check() to be used from config file
  */
-static int w_sanity_check(struct sip_msg* _msg, char* _number, char* _arg) {
-       int ret, check, arg;
-
-       if (_number == NULL) {
-               check = default_msg_checks;
+static int w_sanity_check(sip_msg_t* _msg, char* _msg_check, char* _uri_check)
+{
+       int ret, msg_check, uri_check;
+
+       if (_msg_check == NULL) {
+               msg_check = default_msg_checks;
+       } else {
+               if(fixup_get_ivalue(_msg, (gparam_t*)_msg_check, &msg_check)<0) 
{
+                       LM_ERR("failed to get msg check flags parameter\n");
+                       return -1;
+               }
        }
-       else {
-               check = (int)(long)_number;
+       if (_uri_check == NULL) {
+               uri_check = default_uri_checks;
+       } else {
+               if(fixup_get_ivalue(_msg, (gparam_t*)_uri_check, &uri_check)<0) 
{
+                       LM_ERR("failed to get uri check flags parameter\n");
+                       return -1;
+               }
        }
-       if (_arg == NULL) {
-               arg = default_uri_checks;
+
+       if ((msg_check < 1) || (msg_check >= (SANITY_MAX_CHECKS))) {
+               LM_ERR("input parameter (%i) outside of valid range <1-%i)\n",
+                               msg_check, SANITY_MAX_CHECKS);
+               return -1;
        }
-       else {
-               arg = (int)(long)_arg;
+       if ((uri_check < 1) || (uri_check >= (SANITY_URI_MAX_CHECKS))) {
+               LM_ERR("second input parameter (%i) outside of valid range 
<1-%i\n",
+                               uri_check, SANITY_URI_MAX_CHECKS);
+               return -1;
        }
-       ret = sanity_check(_msg, check, arg);
 
+       ret = sanity_check(_msg, msg_check, uri_check);
        LM_DBG("sanity checks result: %d\n", ret);
        if(_sanity_drop!=0)
                return ret;


_______________________________________________
Kamailio (SER) - Development Mailing List
[email protected]
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to