diff --git a/src/mms/iso_mms/server/mms_domain.c b/src/mms/iso_mms/server/mms_domain.c index 7d07dc3..8085185 100644 --- a/src/mms/iso_mms/server/mms_domain.c +++ b/src/mms/iso_mms/server/mms_domain.c @@ -80,6 +80,9 @@ MmsDomain_getNamedVariableList(MmsDomain* self, char* variableListName) { MmsNamedVariableList variableList = NULL; + if (self == NULL) + goto exit_function; + LinkedList element = LinkedList_getNext(self->namedVariableLists); while (element != NULL) { @@ -93,6 +96,8 @@ MmsDomain_getNamedVariableList(MmsDomain* self, char* variableListName) element = LinkedList_getNext(element); } + +exit_function: return variableList; } diff --git a/src/mms/iso_mms/server/mms_named_variable_list_service.c b/src/mms/iso_mms/server/mms_named_variable_list_service.c index 6aa7174..bc51b29 100644 --- a/src/mms/iso_mms/server/mms_named_variable_list_service.c +++ b/src/mms/iso_mms/server/mms_named_variable_list_service.c @@ -141,19 +141,22 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, MmsDomain* domain = MmsDevice_getDomain(device, domainName); - MmsNamedVariableList variableList = MmsDomain_getNamedVariableList(domain, listName); + if (domain != NULL) { - if (variableList != NULL) { - numberMatched++; + MmsNamedVariableList variableList = MmsDomain_getNamedVariableList(domain, listName); - if (MmsNamedVariableList_isDeletable(variableList)) { + if (variableList != NULL) { + numberMatched++; - if (mmsServer_callVariableListChangedHandler(false, MMS_DOMAIN_SPECIFIC, domain, listName, connection) == true) { - MmsDomain_deleteNamedVariableList(domain, listName); - numberDeleted++; + if (MmsNamedVariableList_isDeletable(variableList)) { + + if (mmsServer_callVariableListChangedHandler(false, MMS_DOMAIN_SPECIFIC, domain, listName, connection) == true) { + MmsDomain_deleteNamedVariableList(domain, listName); + numberDeleted++; + } } - } - } + } + } } else if (request->listOfVariableListName->list.array[i]->present == ObjectName_PR_aaspecific) { char listName[65];