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

Author: Mancaș George <mancas.f.geo...@gmail.com>
Committer: Mancaș George <mancas.f.geo...@gmail.com>
Date: 2019-08-01T09:39:28Z

core: Fix the cfg framework variable input type default

What the affected line of code really wants to achieve is: if an
accepted inputs type mask is not specified then default to accepting
only the actual variable type. So we must mask the var type first,
then shift it by `CFG_INPUT_SHIFT`, before or-ing it with the rest.

What happened before was that the entire type was shifted, and that
included var type, input type and flags. What we end up with is some
additional higher bits set (for flags). I actually discovered this while
adding an additional flag that was meant to mark variables as private,
only accessible through an internal API (not available to modules such
as cfg_rpc).

---

Modified: src/core/cfg/cfg.c

---

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

---

diff --git a/src/core/cfg/cfg.c b/src/core/cfg/cfg.c
index 3822a9c94d..488d72f35a 100644
--- a/src/core/cfg/cfg.c
+++ b/src/core/cfg/cfg.c
@@ -94,7 +94,7 @@ int cfg_declare(char *group_name, cfg_def_t *def, void 
*values, int def_size,
 
                /* verify the type of the input */
                if (CFG_INPUT_MASK(def[i].type)==0) {
-                       def[i].type |= def[i].type << CFG_INPUT_SHIFT;
+                       def[i].type |= CFG_VAR_MASK(def[i].type) << 
CFG_INPUT_SHIFT;
                } else {
                        if ((CFG_INPUT_MASK(def[i].type) != 
CFG_VAR_MASK(def[i].type) << CFG_INPUT_SHIFT)
                        && (def[i].on_change_cb == 0)) {


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

Reply via email to