[sr-dev] git:master:36b1cfe9: ims_*_scscf: Safety checks for the locks
Carsten Bock
carsten at ng-voice.com
Tue May 5 22:00:31 CEST 2015
Module: kamailio
Branch: master
Commit: 36b1cfe97ff2736b693f3a0beff6b2052a942fdd
URL: https://github.com/kamailio/kamailio/commit/36b1cfe97ff2736b693f3a0beff6b2052a942fdd
Author: Carsten Bock <carsten at ng-voice.com>
Committer: Carsten Bock <carsten at ng-voice.com>
Date: 2015-05-05T21:59:39+02:00
ims_*_scscf: Safety checks for the locks
---
Modified: modules/ims_registrar_scscf/registrar_notify.c
Modified: modules/ims_registrar_scscf/userdata_parser.c
---
Diff: https://github.com/kamailio/kamailio/commit/36b1cfe97ff2736b693f3a0beff6b2052a942fdd.diff
Patch: https://github.com/kamailio/kamailio/commit/36b1cfe97ff2736b693f3a0beff6b2052a942fdd.patch
---
diff --git a/modules/ims_registrar_scscf/registrar_notify.c b/modules/ims_registrar_scscf/registrar_notify.c
index e9b2ab1..a9a7216 100644
--- a/modules/ims_registrar_scscf/registrar_notify.c
+++ b/modules/ims_registrar_scscf/registrar_notify.c
@@ -122,7 +122,12 @@ int notify_init() {
LM_ERR("failed to create cdp event list lock\n");
return 0;
}
- notification_list->lock = lock_init(notification_list->lock);
+ if (lock_init(notification_list->lock)==0){
+ lock_dealloc(notification_list->lock);
+ notification_list->lock=0;
+ LM_ERR("failed to initialize cdp event list lock\n");
+ return 0;
+ }
notification_list->size = 0;
sem_new(notification_list->empty, 0); //pre-locked - as we assume list is empty at start
return 1;
diff --git a/modules/ims_registrar_scscf/userdata_parser.c b/modules/ims_registrar_scscf/userdata_parser.c
index 90e8976..8fc93b0 100644
--- a/modules/ims_registrar_scscf/userdata_parser.c
+++ b/modules/ims_registrar_scscf/userdata_parser.c
@@ -860,7 +860,18 @@ static ims_subscription* parse_ims_subscription(xmlDocPtr doc, xmlNodePtr root)
s->service_profiles_cnt++;
}
s->lock = lock_alloc();
- s->lock = lock_init(s->lock);
+ if (s->lock==0) {
+ LM_ERR("Failed to allocate Lock for IMS Subscription\n");
+ shm_free(s);
+ return 0;
+ }
+ if (lock_init(s->lock)==0){
+ LM_ERR("Failed to initialize Lock for IMS Subscription\n");
+ lock_dealloc(s->lock);
+ s->lock=0;
+ shm_free(s);
+ return 0;
+ }
return s;
}
More information about the sr-dev
mailing list