Module: kamailio
Branch: 5.6
Commit: 6796e7faeef7c0af9805b07e4f29c6924d8f3edc
URL: 
https://github.com/kamailio/kamailio/commit/6796e7faeef7c0af9805b07e4f29c6924d8f3edc

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2023-02-24T13:53:21+01:00

lib/ims: check return of strtok(...)

(cherry picked from commit 63095ef1bef36a35952ed265f41d87ccbc1bba70)

---

Modified: src/lib/ims/ims_getters.c

---

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

---

diff --git a/src/lib/ims/ims_getters.c b/src/lib/ims/ims_getters.c
index 26fdbb8c418..56816be422f 100644
--- a/src/lib/ims/ims_getters.c
+++ b/src/lib/ims/ims_getters.c
@@ -1247,12 +1247,13 @@ int cscf_get_p_charging_vector(struct sip_msg *msg, str 
* icid, str * orig_ioi,
        LM_DBG("p_charging_vector body is %.*s\n", header_body.len, 
header_body.s);
 
        p = strtok(header_body.s, " ;:\r\t\n\"=");
-       loop: if (p > (header_body.s + header_body.len))
+loop:
+       if (p == NULL || p > (header_body.s + header_body.len))
                return 1;
 
        if (strncmp(p, "icid-value", 10) == 0) {
                p = strtok(NULL, " ;:\r\t\n\"=");
-               if (p > (header_body.s + header_body.len)) {
+               if (p == NULL || p > (header_body.s + header_body.len)) {
                        LM_ERR("cscf_get_p_charging_vector: no value for 
icid\n");
                        return 0;
                }
@@ -1272,7 +1273,7 @@ int cscf_get_p_charging_vector(struct sip_msg *msg, str * 
icid, str * orig_ioi,
        } else if (strncmp(p, "orig-ioi", 8) == 0) {
 
                p = strtok(NULL, " ;:\r\t\n\"=");
-               if (p > (header_body.s + header_body.len)) {
+               if (p == NULL || p > (header_body.s + header_body.len)) {
                        LM_ERR("cscf_get_p_charging_vector: no value for 
icid\n");
                        return 0;
                }
@@ -1292,7 +1293,7 @@ int cscf_get_p_charging_vector(struct sip_msg *msg, str * 
icid, str * orig_ioi,
        } else if (strncmp(p, "term-ioi", 8) == 0) {
 
                p = strtok(NULL, " ;:\r\t\n\"=");
-               if (p > (header_body.s + header_body.len)) {
+               if (p == NULL || p > (header_body.s + header_body.len)) {
                        LM_ERR("cscf_get_p_charging_vector: no value for 
icid\n");
                        return 0;
                }
@@ -1314,7 +1315,7 @@ int cscf_get_p_charging_vector(struct sip_msg *msg, str * 
icid, str * orig_ioi,
        LM_DBG("end\n");
        str_free(header_body, pkg);
        return 1;
-       out_of_memory:
+out_of_memory:
        PKG_MEM_ERROR;
        return 0;
 }

_______________________________________________
Kamailio (SER) - Development Mailing List
To unsubscribe send an email to [email protected]

Reply via email to