Module: kamailio
Branch: master
Commit: 1128df71dcba1cd97898c2970e7cd3221256adb1
URL:
https://github.com/kamailio/kamailio/commit/1128df71dcba1cd97898c2970e7cd32…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2023-06-13T09:45:13+02:00
cdp: safety checks on error cleanup for diameter_peer_init_real()
---
Modified: src/modules/cdp/diameter_peer.c
---
Diff:
https://github.com/kamailio/kamailio/commit/1128df71dcba1cd97898c2970e7cd32…
Patch:
https://github.com/kamailio/kamailio/commit/1128df71dcba1cd97898c2970e7cd32…
---
diff --git a/src/modules/cdp/diameter_peer.c b/src/modules/cdp/diameter_peer.c
index bea1d1f0717..294d8d640ea 100644
--- a/src/modules/cdp/diameter_peer.c
+++ b/src/modules/cdp/diameter_peer.c
@@ -151,7 +151,6 @@ int diameter_peer_init_real()
if(!cdp_sessions_init(config->sessions_hash_size))
goto error;
-
/* add callback for messages - used to implement the API */
cb_add(api_callback, 0);
@@ -162,16 +161,20 @@ int diameter_peer_init_real()
shm_free(shutdownx);
if(config)
free_dp_config(config);
- i = pid_list->head;
- while(i) {
- j = i->next;
- shm_free(i);
- i = j;
+ if(pid_list) {
+ i = pid_list->head;
+ while(i) {
+ j = i->next;
+ shm_free(i);
+ i = j;
+ }
+ shm_free(pid_list);
+ }
+ if(pid_list_lock) {
+ lock_get(pid_list_lock);
+ lock_destroy(pid_list_lock);
+ lock_dealloc((void *)pid_list_lock);
}
- shm_free(pid_list);
- lock_get(pid_list_lock);
- lock_destroy(pid_list_lock);
- lock_dealloc((void *)pid_list_lock);
return 0;
}