diff --git a/src/mms/iso_mms/server/mms_identify_service.c b/src/mms/iso_mms/server/mms_identify_service.c index 0c88007e..c28bbbc4 100644 --- a/src/mms/iso_mms/server/mms_identify_service.c +++ b/src/mms/iso_mms/server/mms_identify_service.c @@ -101,4 +101,3 @@ MmsServer_getRevision(MmsServer self) } #endif /* MMS_IDENTIFY_SERVICE == 1 */ - diff --git a/src/mms/iso_mms/server/mms_information_report.c b/src/mms/iso_mms/server/mms_information_report.c index 95ae5e24..b481a7e2 100644 --- a/src/mms/iso_mms/server/mms_information_report.c +++ b/src/mms/iso_mms/server/mms_information_report.c @@ -50,7 +50,8 @@ MmsServerConnection_sendInformationReportSingleVariableVMDSpecific(MmsServerConn uint32_t completeMessageSize = 1 + informationReportSize + BerEncoder_determineLengthSize(informationReportSize); - if (completeMessageSize > self->maxPduSize) { + if (completeMessageSize > self->maxPduSize) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: report message too large %u (max = %u) -> skip message!\n", completeMessageSize, self->maxPduSize); @@ -113,12 +114,13 @@ MmsServerConnection_sendInformationReportListOfVariables( LinkedList specElement = LinkedList_getNext(variableAccessDeclarations); - while (specElement != NULL) { + while (specElement) + { MmsVariableAccessSpecification* spec = (MmsVariableAccessSpecification*) specElement->data; uint32_t varSpecSize = BerEncoder_determineEncodedStringSize(spec->itemId); - if (spec->domainId != NULL) + if (spec->domainId) varSpecSize += BerEncoder_determineEncodedStringSize(spec->domainId); uint32_t sequenceSize = (varSpecSize + 1 + BerEncoder_determineLengthSize(varSpecSize)); @@ -131,12 +133,12 @@ MmsServerConnection_sendInformationReportListOfVariables( uint32_t listOfVariableSize = 1 + BerEncoder_determineLengthSize(listOfVarSpecSize) + listOfVarSpecSize; - uint32_t accessResultSize = 0; LinkedList valueElement = LinkedList_getNext(values); - while (valueElement != NULL) { + while (valueElement) + { MmsValue* value = (MmsValue*) valueElement->data; accessResultSize += MmsValue_encodeMmsData(value, NULL, 0, false); @@ -155,7 +157,8 @@ MmsServerConnection_sendInformationReportListOfVariables( uint32_t completeMessageSize = 1 + informationReportSize + BerEncoder_determineLengthSize(informationReportSize); - if (completeMessageSize > self->maxPduSize) { + if (completeMessageSize > self->maxPduSize) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: report message too large %u (max = %u) -> skip message!\n", completeMessageSize, self->maxPduSize); @@ -183,13 +186,14 @@ MmsServerConnection_sendInformationReportListOfVariables( specElement = LinkedList_getNext(variableAccessDeclarations); i = 0; - while (specElement != NULL) { + while (specElement) + { MmsVariableAccessSpecification* spec = (MmsVariableAccessSpecification*) specElement->data; uint32_t varSpecSize = BerEncoder_determineEncodedStringSize(spec->itemId); - if (spec->domainId != NULL) { - + if (spec->domainId) + { varSpecSize += BerEncoder_determineEncodedStringSize(spec->domainId); uint32_t varSpecSizeComplete = varSpecSize + BerEncoder_determineLengthSize(varSpecSize) + 1; uint32_t sequenceSize = varSpecSizeComplete + BerEncoder_determineLengthSize(varSpecSizeComplete) + 1; @@ -200,14 +204,14 @@ MmsServerConnection_sendInformationReportListOfVariables( bufPos = BerEncoder_encodeStringWithTag(0x1a, spec->domainId, buffer, bufPos); bufPos = BerEncoder_encodeStringWithTag(0x1a, spec->itemId, buffer, bufPos); } - else { + else + { uint32_t sequenceSize = varSpecSize + BerEncoder_determineLengthSize(varSpecSize) + 1; bufPos = BerEncoder_encodeTL(0x30, sequenceSize, buffer, bufPos); bufPos = BerEncoder_encodeTL(0xa0, varSpecSize, buffer, bufPos); /* vmd-specific */ bufPos = BerEncoder_encodeStringWithTag(0x80, spec->itemId, buffer, bufPos); } - i++; specElement = LinkedList_getNext(specElement); } @@ -217,7 +221,8 @@ MmsServerConnection_sendInformationReportListOfVariables( valueElement = LinkedList_getNext(values); - while (valueElement != NULL) { + while (valueElement) + { MmsValue* value = (MmsValue*) valueElement->data; bufPos = MmsValue_encodeMmsData(value, buffer, bufPos, true); @@ -232,7 +237,8 @@ MmsServerConnection_sendInformationReportListOfVariables( MmsServer_releaseTransmitBuffer(self->server); #if (CONFIG_MMS_THREADLESS_STACK != 1) - if (handlerMode == false) { + if (handlerMode == false) + { IsoConnection_unlock(self->isoConnection); } #endif @@ -260,8 +266,8 @@ MmsServerConnection_sendInformationReportVMDSpecific(MmsServerConnection self, c /* iterate values list and add values to the accessResultList */ LinkedList value = LinkedList_getNext(values); - while (value != NULL) { - + while (value) + { MmsValue* data = (MmsValue*) value->data; accessResultSize += MmsValue_encodeMmsData(data, NULL, 0, false); @@ -279,7 +285,8 @@ MmsServerConnection_sendInformationReportVMDSpecific(MmsServerConnection self, c uint32_t completeMessageSize = 1 + informationReportSize + BerEncoder_determineLengthSize(informationReportSize); - if (completeMessageSize > self->maxPduSize) { + if (completeMessageSize > self->maxPduSize) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: report message too large %u (max = %u) -> skip message!\n", completeMessageSize, self->maxPduSize); @@ -296,7 +303,6 @@ MmsServerConnection_sendInformationReportVMDSpecific(MmsServerConnection self, c uint8_t* buffer = reportBuffer->buffer; int bufPos = 0; - /* encode */ bufPos = BerEncoder_encodeTL(0xa3, informationReportSize, buffer, bufPos); bufPos = BerEncoder_encodeTL(0xa0, informationReportContentSize, buffer, bufPos); @@ -308,8 +314,8 @@ MmsServerConnection_sendInformationReportVMDSpecific(MmsServerConnection self, c value = LinkedList_getNext(values); - while (value != NULL) { - + while (value) + { MmsValue* data = (MmsValue*) value->data; bufPos = MmsValue_encodeMmsData(data, buffer, bufPos, true); @@ -331,6 +337,3 @@ MmsServerConnection_sendInformationReportVMDSpecific(MmsServerConnection self, c exit_function: return; } - - - diff --git a/src/mms/iso_mms/server/mms_journal.c b/src/mms/iso_mms/server/mms_journal.c index 49916cf5..02975c8a 100644 --- a/src/mms/iso_mms/server/mms_journal.c +++ b/src/mms/iso_mms/server/mms_journal.c @@ -1,7 +1,7 @@ /* * mms_journal.c * - * Copyright 2016 Michael Zillgith + * Copyright 2016-2024 Michael Zillgith * * This file is part of libIEC61850. * @@ -33,7 +33,11 @@ MmsJournal_create(const char* name) MmsJournal self = (MmsJournal) GLOBAL_MALLOC(sizeof(struct sMmsJournal)); - self->name = StringUtils_copyString(name); + if (self) + { + self->name = StringUtils_copyString(name); + self->logStorage = NULL; + } return self; } @@ -41,6 +45,9 @@ MmsJournal_create(const char* name) void MmsJournal_destroy(MmsJournal self) { - GLOBAL_FREEMEM(self->name); - GLOBAL_FREEMEM(self); + if (self) + { + GLOBAL_FREEMEM(self->name); + GLOBAL_FREEMEM(self); + } } diff --git a/src/mms/iso_mms/server/mms_journal_service.c b/src/mms/iso_mms/server/mms_journal_service.c index 0aadde40..1c358443 100644 --- a/src/mms/iso_mms/server/mms_journal_service.c +++ b/src/mms/iso_mms/server/mms_journal_service.c @@ -57,8 +57,8 @@ entryCallback(void* parameter, uint64_t timestamp, uint64_t entryID, bool moreFo { JournalEncoder encoder = (JournalEncoder) parameter; - if (moreFollow) { - + if (moreFollow) + { if (encoder->moreFollows) return false; @@ -84,7 +84,8 @@ entryDataCallback (void* parameter, const char* dataRef, uint8_t* data, int data /* TODO check if entry is too long for buffer! */ - if (moreFollow) { + if (moreFollow) + { int bufPos = encoder->bufPos; uint32_t dataRefStrLen = strlen(dataRef); @@ -112,7 +113,8 @@ entryDataCallback (void* parameter, const char* dataRef, uint8_t* data, int data uint32_t totalLen = firstVariableLen + secondVariableLen; - if ((int) (bufPos + totalLen) > encoder->maxSize) { + if ((int) (bufPos + totalLen) > encoder->maxSize) + { encoder->moreFollows = true; encoder->bufPos = encoder->currentEntryBufPos; /* remove last entry */ return false; @@ -137,7 +139,8 @@ entryDataCallback (void* parameter, const char* dataRef, uint8_t* data, int data encoder->bufPos = bufPos; } - else { + else + { int dataContentLen = encoder->bufPos - (encoder->currentEntryBufPos + 48); int journalVariablesLen = 1 + BerEncoder_determineLengthSize(dataContentLen) + dataContentLen; @@ -191,19 +194,22 @@ parseStringWithMaxLength(char* filename, int maxLength, uint8_t* buffer, int* bu uint8_t tag = buffer[(*bufPos)++]; int length; - if (tag != 0x1a) { + if (tag != 0x1a) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); return false; } *bufPos = BerDecoder_decodeLength(buffer, &length, *bufPos, maxBufPos); - if (*bufPos < 0) { + if (*bufPos < 0) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); return false; } - if (length > maxLength) { + if (length > maxLength) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); return false; } @@ -243,30 +249,34 @@ mmsServer_handleReadJournalRequest( bool hasTimeSpec = false; bool hasEntrySpec = false; - while (bufPos < maxBufPos) { + while (bufPos < maxBufPos) + { uint8_t tag = requestBuffer[bufPos++]; int length; bufPos = BerDecoder_decodeLength(requestBuffer, &length, bufPos, maxBufPos); - if (bufPos < 0) { + if (bufPos < 0) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); return; } - switch (tag) { - + switch (tag) + { case 0xa0: /* journalName */ { uint8_t objectIdTag = requestBuffer[bufPos++]; bufPos = BerDecoder_decodeLength(requestBuffer, &length, bufPos, maxBufPos); - if (bufPos < 0) { + if (bufPos < 0) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); return; } - switch (objectIdTag) { + switch (objectIdTag) + { case 0xa1: /* domain-specific */ if (!parseStringWithMaxLength(domainId, 64, requestBuffer, &bufPos, bufPos + length, invokeId, response)) { @@ -294,20 +304,22 @@ mmsServer_handleReadJournalRequest( { uint8_t subTag = requestBuffer[bufPos++]; - if (subTag != 0x80) { + if (subTag != 0x80) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_UNRECOGNIZED_MODIFIER, response); return; } bufPos = BerDecoder_decodeLength(requestBuffer, &length, bufPos, maxBufPos); - if (bufPos < 0) { + if (bufPos < 0) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); return; } - if ((length == 4) || (length == 6)) { - + if ((length == 4) || (length == 6)) + { rangeStart.type = MMS_BINARY_TIME; rangeStart.value.binaryTime.size = length; @@ -315,7 +327,8 @@ mmsServer_handleReadJournalRequest( hasRangeStartSpec = true; } - else { + else + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); return; /* forward request to implementation class */ } @@ -329,19 +342,22 @@ mmsServer_handleReadJournalRequest( { uint8_t subTag = requestBuffer[bufPos++]; - if (subTag != 0x80) { + if (subTag != 0x80) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_UNRECOGNIZED_MODIFIER, response); return; } bufPos = BerDecoder_decodeLength(requestBuffer, &length, bufPos, maxBufPos); - if (bufPos < 0) { + if (bufPos < 0) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); return; } - if ((length == 4) || (length == 6)) { + if ((length == 4) || (length == 6)) + { rangeStop.type = MMS_BINARY_TIME; rangeStop.value.binaryTime.size = length; @@ -349,9 +365,10 @@ mmsServer_handleReadJournalRequest( hasRangeStopSpec = true; } - else { + else + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); - return; /* forward request to implementation class */ + return; } bufPos += length; @@ -363,20 +380,24 @@ mmsServer_handleReadJournalRequest( { int maxSubBufPos = bufPos + length; - while (bufPos < maxSubBufPos) { + while (bufPos < maxSubBufPos) + { uint8_t subTag = requestBuffer[bufPos++]; bufPos = BerDecoder_decodeLength(requestBuffer, &length, bufPos, maxBufPos); - if (bufPos < 0) { + if (bufPos < 0) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); return; } - switch (subTag) { + switch (subTag) + { case 0x80: /* timeSpecification */ - if ((length == 4) || (length == 6)) { + if ((length == 4) || (length == 6)) + { rangeStart.type = MMS_BINARY_TIME; rangeStart.value.binaryTime.size = length; @@ -384,7 +405,8 @@ mmsServer_handleReadJournalRequest( hasTimeSpec = true; } - else { + else + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); return; } @@ -393,13 +415,15 @@ mmsServer_handleReadJournalRequest( case 0x81: /* entrySpecification */ - if (length <= entrySpec.value.octetString.maxSize) { + if (length <= entrySpec.value.octetString.maxSize) + { memcpy(entrySpec.value.octetString.buf, requestBuffer + bufPos, length); entrySpec.value.octetString.size = length; hasEntrySpec = true; } - else { + else + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); return; } @@ -424,7 +448,8 @@ mmsServer_handleReadJournalRequest( } /* check if required fields are present */ - if (hasNames == false) { + if (hasNames == false) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: readJournal missing journal name\n"); @@ -439,7 +464,8 @@ mmsServer_handleReadJournalRequest( MmsDomain* mmsDomain = MmsDevice_getDomain(mmsDevice, domainId); - if (mmsDomain == NULL) { + if (mmsDomain == NULL) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: readJournal domain %s not found\n", domainId); @@ -450,7 +476,8 @@ mmsServer_handleReadJournalRequest( MmsJournal mmsJournal = MmsDomain_getJournal(mmsDomain, logName); - if (mmsJournal == NULL) { + if (mmsJournal == NULL) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: readJournal journal %s not found\n", logName); @@ -485,17 +512,20 @@ mmsServer_handleReadJournalRequest( LogStorage logStorage = mmsJournal->logStorage; - if (logStorage != NULL) { - - if (hasRangeStartSpec && hasRangeStopSpec) { + if (logStorage) + { + if (hasRangeStartSpec && hasRangeStopSpec) + { LogStorage_getEntries(logStorage, MmsValue_getBinaryTimeAsUtcMs(&rangeStart), MmsValue_getBinaryTimeAsUtcMs(&rangeStop), entryCallback, entryDataCallback, &encoder); } - else if (hasEntrySpec && hasTimeSpec) { + else if (hasEntrySpec && hasTimeSpec) + { LogStorage_getEntriesAfter(logStorage, MmsValue_getBinaryTimeAsUtcMs(&rangeStart), *((uint64_t*) entryIdBuf), entryCallback, entryDataCallback, &encoder); } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: readJournal missing valid argument combination\n"); @@ -503,7 +533,6 @@ mmsServer_handleReadJournalRequest( return; } - } /* actual encoding will happen in callback handler. When getEntries returns the data is * already encoded in the buffer. diff --git a/src/mms/iso_mms/server/mms_named_variable_list.c b/src/mms/iso_mms/server/mms_named_variable_list.c index 3c5ea5c3..ccaf21fd 100644 --- a/src/mms/iso_mms/server/mms_named_variable_list.c +++ b/src/mms/iso_mms/server/mms_named_variable_list.c @@ -28,27 +28,35 @@ MmsNamedVariableListEntry MmsNamedVariableListEntry_create(MmsAccessSpecifier accessSpecifier) { - MmsNamedVariableListEntry listEntry = (MmsNamedVariableListEntry) GLOBAL_MALLOC(sizeof(MmsAccessSpecifier)); + MmsNamedVariableListEntry self = (MmsNamedVariableListEntry) GLOBAL_MALLOC(sizeof(MmsAccessSpecifier)); - listEntry->domain = accessSpecifier.domain; - listEntry->variableName = StringUtils_copyString(accessSpecifier.variableName); - listEntry->arrayIndex = accessSpecifier.arrayIndex; + if (self) + { + self->domain = accessSpecifier.domain; + self->variableName = StringUtils_copyString(accessSpecifier.variableName); + self->arrayIndex = accessSpecifier.arrayIndex; - if (accessSpecifier.componentName != NULL) - listEntry->componentName = StringUtils_copyString(accessSpecifier.componentName); - else - listEntry->componentName = NULL; + if (accessSpecifier.componentName) + self->componentName = StringUtils_copyString(accessSpecifier.componentName); + else + self->componentName = NULL; + } - return listEntry; + return self; } void MmsNamedVariableListEntry_destroy(MmsNamedVariableListEntry self) { - GLOBAL_FREEMEM(self->variableName); - if (self->componentName) - GLOBAL_FREEMEM(self->componentName); - GLOBAL_FREEMEM(self); + if (self) + { + GLOBAL_FREEMEM(self->variableName); + + if (self->componentName) + GLOBAL_FREEMEM(self->componentName); + + GLOBAL_FREEMEM(self); + } } MmsDomain* @@ -58,7 +66,8 @@ MmsNamedVariableListEntry_getDomain(MmsNamedVariableListEntry self) } char* -MmsNamedVariableListEntry_getVariableName(MmsNamedVariableListEntry self) { +MmsNamedVariableListEntry_getVariableName(MmsNamedVariableListEntry self) +{ return self->variableName; } @@ -67,10 +76,13 @@ MmsNamedVariableList_create(MmsDomain* domain, char* name, bool deletable) { MmsNamedVariableList self = (MmsNamedVariableList) GLOBAL_MALLOC(sizeof(struct sMmsNamedVariableList)); - self->deletable = deletable; - self->name = StringUtils_copyString(name); - self->listOfVariables = LinkedList_create(); - self->domain = domain; + if (self) + { + self->deletable = deletable; + self->name = StringUtils_copyString(name); + self->listOfVariables = LinkedList_create(); + self->domain = domain; + } return self; } @@ -115,7 +127,10 @@ deleteVariableListEntry(void* listEntry) void MmsNamedVariableList_destroy(MmsNamedVariableList self) { - LinkedList_destroyDeep(self->listOfVariables, deleteVariableListEntry); - GLOBAL_FREEMEM(self->name); - GLOBAL_FREEMEM(self); + if (self) + { + LinkedList_destroyDeep(self->listOfVariables, deleteVariableListEntry); + GLOBAL_FREEMEM(self->name); + GLOBAL_FREEMEM(self); + } } 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 f9cdbacf..a8cd8f94 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 @@ -1,7 +1,7 @@ /* * mms_named_variable_list_service.c * - * Copyright 2013-2023 Michael Zillgith + * Copyright 2013-2024 Michael Zillgith * * This file is part of libIEC61850. * @@ -54,7 +54,8 @@ mmsServer_callVariableListChangedHandler(MmsVariableListAccessType accessType, M { MmsServer self = connection->server; - if (self->variableListAccessHandler != NULL) { + if (self->variableListAccessHandler) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: call MmsNamedVariableListAccessHandler for new list %s\n", listName); @@ -125,7 +126,8 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, asn_dec_rval_t rval = ber_decode(NULL, &asn_DEF_MmsPdu, (void**) &mmsPdu, buffer, maxBufPos); - if (rval.code != RC_OK) { + if (rval.code != RC_OK) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); goto exit_function; } @@ -136,7 +138,8 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, { request = &(mmsPdu->choice.confirmedRequestPdu.confirmedServiceRequest.choice.deleteNamedVariableList); } - else { + else + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); goto exit_function; } @@ -154,7 +157,8 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, MmsDevice* device = MmsServer_getDevice(connection->server); - if (scopeOfDelete == DeleteNamedVariableListRequest__scopeOfDelete_specific) { + if (scopeOfDelete == DeleteNamedVariableListRequest__scopeOfDelete_specific) + { MmsError serviceError = MMS_ERROR_NONE; int numberMatched = 0; @@ -164,8 +168,10 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, int i; - for (i = 0; i < numberItems; i++) { - if (request->listOfVariableListName->list.array[i]->present == ObjectName_PR_domainspecific) { + for (i = 0; i < numberItems; i++) + { + if (request->listOfVariableListName->list.array[i]->present == ObjectName_PR_domainspecific) + { char domainName[65]; char listName[65]; @@ -177,18 +183,20 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, MmsDomain* domain = MmsDevice_getDomain(device, domainName); - if (domain != NULL) { - + if (domain) + { MmsNamedVariableList variableList = MmsDomain_getNamedVariableList(domain, listName); - if (variableList != NULL) { + if (variableList) + { numberMatched++; - if (MmsNamedVariableList_isDeletable(variableList)) { - + if (MmsNamedVariableList_isDeletable(variableList)) + { MmsError deleteError = mmsServer_callVariableListChangedHandler(MMS_VARLIST_DELETE, MMS_DOMAIN_SPECIFIC, domain, listName, connection); - if (deleteError == MMS_ERROR_NONE) { + if (deleteError == MMS_ERROR_NONE) + { MmsDomain_deleteNamedVariableList(domain, listName); numberDeleted++; } @@ -198,7 +206,8 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, } } } - else if (request->listOfVariableListName->list.array[i]->present == ObjectName_PR_aaspecific) { + else if (request->listOfVariableListName->list.array[i]->present == ObjectName_PR_aaspecific) + { char listName[65]; mmsMsg_copyAsn1IdentifierToStringBuffer(request->listOfVariableListName->list.array[i]->choice.aaspecific, @@ -206,12 +215,14 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, MmsNamedVariableList variableList = MmsServerConnection_getNamedVariableList(connection, listName); - if (variableList != NULL) { + if (variableList) + { numberMatched++; MmsError deleteError = mmsServer_callVariableListChangedHandler(MMS_VARLIST_DELETE, MMS_ASSOCIATION_SPECIFIC, NULL, listName, connection); - if (deleteError == MMS_ERROR_NONE) { + if (deleteError == MMS_ERROR_NONE) + { numberDeleted++; MmsServerConnection_deleteNamedVariableList(connection, listName); } @@ -219,7 +230,8 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, serviceError = deleteError; } } - else if (request->listOfVariableListName->list.array[i]->present == ObjectName_PR_vmdspecific) { + else if (request->listOfVariableListName->list.array[i]->present == ObjectName_PR_vmdspecific) + { char listName[65]; mmsMsg_copyAsn1IdentifierToStringBuffer(request->listOfVariableListName->list.array[i]->choice.vmdspecific, @@ -227,12 +239,14 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, MmsNamedVariableList variableList = mmsServer_getNamedVariableListWithName(device->namedVariableLists, listName); - if (variableList != NULL) { + if (variableList) + { numberMatched++; MmsError deleteError = mmsServer_callVariableListChangedHandler(MMS_VARLIST_DELETE, MMS_VMD_SPECIFIC, NULL, listName, connection); - if (deleteError == MMS_ERROR_NONE) { + if (deleteError == MMS_ERROR_NONE) + { numberDeleted++; mmsServer_deleteVariableList(device->namedVariableLists, listName); } @@ -247,7 +261,8 @@ mmsServer_handleDeleteNamedVariableListRequest(MmsServerConnection connection, else createServiceErrorDeleteVariableLists(invokeId, response, serviceError, numberDeleted); } - else { + else + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_ACCESS_UNSUPPORTED); } @@ -292,14 +307,16 @@ checkIfVariableExists(MmsDevice* device, MmsAccessSpecifier* accessSpecifier) if (variableSpec == NULL) return false; - if (accessSpecifier->arrayIndex != -1) { + if (accessSpecifier->arrayIndex != -1) + { if (variableSpec->type != MMS_ARRAY) return false; if (accessSpecifier->arrayIndex >= variableSpec->typeSpec.array.elementCount) return false; - if (accessSpecifier->componentName != NULL) { + if (accessSpecifier->componentName) + { variableSpec = variableSpec->typeSpec.array.elementTypeSpec; if (MmsVariableSpecification_getNamedVariableRecursive(variableSpec, accessSpecifier->componentName) == NULL) @@ -323,9 +340,11 @@ createNamedVariableList(MmsServer server, MmsDomain* domain, MmsDevice* device, printf("MMS_SERVER: create-named-variable-list (%i variable(s) | max=%i)\n", variableCount, server->maxDataSetEntries); #if (CONFIG_MMS_SERVER_CONFIG_SERVICES_AT_RUNTIME == 1) - if ((variableCount == 0 ) || (variableCount > server->maxDataSetEntries)) { + if ((variableCount == 0 ) || (variableCount > server->maxDataSetEntries)) + { #else - if ((variableCount == 0 ) || (variableCount > CONFIG_MMS_MAX_NUMBER_OF_DATA_SET_MEMBERS)) { + if ((variableCount == 0 ) || (variableCount > CONFIG_MMS_MAX_NUMBER_OF_DATA_SET_MEMBERS)) + { #endif *mmsError = MMS_ERROR_DEFINITION_OTHER; goto exit_function; @@ -334,7 +353,8 @@ createNamedVariableList(MmsServer server, MmsDomain* domain, MmsDevice* device, namedVariableList = MmsNamedVariableList_create(domain, variableListName, true); int i; - for (i = 0; i < variableCount; i++) { + for (i = 0; i < variableCount; i++) + { VariableSpecification_t* varSpec = &request->listOfVariable.list.array[i]->variableSpecification; @@ -344,10 +364,10 @@ createNamedVariableList(MmsServer server, MmsDomain* domain, MmsDevice* device, char* componentName = NULL; /* Handle alternate access specification - for array element definition */ - if (request->listOfVariable.list.array[i]->alternateAccess != NULL) { - - if (request->listOfVariable.list.array[i]->alternateAccess->list.count != 1) { - + if (request->listOfVariable.list.array[i]->alternateAccess) + { + if (request->listOfVariable.list.array[i]->alternateAccess->list.count != 1) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: create-named-variable list - only one alternate access specification allowed!\n"); @@ -355,8 +375,8 @@ createNamedVariableList(MmsServer server, MmsDomain* domain, MmsDevice* device, namedVariableList = NULL; break; } - else { - + else + { struct AlternateAccess__Member* alternateAccess = request->listOfVariable.list.array[i]->alternateAccess->list.array[0]; @@ -368,14 +388,16 @@ createNamedVariableList(MmsServer server, MmsDomain* domain, MmsDevice* device, asn_INTEGER2long(&(alternateAccess->choice.unnamed->choice.selectAlternateAccess.accessSelection.choice.index), &arrayIndex); - if (alternateAccess->choice.unnamed->choice.selectAlternateAccess.alternateAccess) { + if (alternateAccess->choice.unnamed->choice.selectAlternateAccess.alternateAccess) + { componentNameBuf[0] = 0; componentName = mmsMsg_getComponentNameFromAlternateAccess( alternateAccess->choice.unnamed->choice.selectAlternateAccess.alternateAccess, componentNameBuf, 0); } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: create-named-variable-list - component specification is missing!\n"); } @@ -387,7 +409,8 @@ createNamedVariableList(MmsServer server, MmsDomain* domain, MmsDevice* device, { asn_INTEGER2long(&(alternateAccess->choice.unnamed->choice.selectAccess.choice.index), &arrayIndex); } - else { + else + { MmsNamedVariableList_destroy(namedVariableList); namedVariableList = NULL; *mmsError = MMS_ERROR_DEFINITION_INVALID_ADDRESS; @@ -396,8 +419,8 @@ createNamedVariableList(MmsServer server, MmsDomain* domain, MmsDevice* device, } } - if (varSpec->present == VariableSpecification_PR_name) { - + if (varSpec->present == VariableSpecification_PR_name) + { char variableName[65]; char domainId[65]; @@ -422,14 +445,15 @@ createNamedVariableList(MmsServer server, MmsDomain* domain, MmsDevice* device, printf("MMS SERVER: add named variable list entry: %s/%s(%li)%s\n", MmsDomain_getName(elementDomain), variableName, arrayIndex, componentName); /* check if element exists */ - if (checkIfVariableExists(device, &accessSpecifier) == true) { + if (checkIfVariableExists(device, &accessSpecifier) == true) + { MmsNamedVariableListEntry variable = MmsNamedVariableListEntry_create(accessSpecifier); MmsNamedVariableList_addVariable(namedVariableList, variable); } - else { - + else + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: failed - variable does not exist!\n"); @@ -439,7 +463,8 @@ createNamedVariableList(MmsServer server, MmsDomain* domain, MmsDevice* device, *mmsError = MMS_ERROR_DEFINITION_OBJECT_UNDEFINED; } } - else { + else + { MmsNamedVariableList_destroy(namedVariableList); namedVariableList = NULL; *mmsError = MMS_ERROR_DEFINITION_INVALID_ADDRESS; @@ -467,7 +492,8 @@ mmsServer_handleDefineNamedVariableListRequest( asn_dec_rval_t rval = ber_decode(NULL, &asn_DEF_MmsPdu, (void**) &mmsPdu, buffer, maxBufPos); - if (rval.code != RC_OK) { + if (rval.code != RC_OK) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); goto exit_free_struct; } @@ -478,18 +504,20 @@ mmsServer_handleDefineNamedVariableListRequest( { request = &(mmsPdu->choice.confirmedRequestPdu.confirmedServiceRequest.choice.defineNamedVariableList); } - else { + else + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); goto exit_free_struct; } MmsDevice* device = MmsServer_getDevice(connection->server); - if (request->variableListName.present == ObjectName_PR_domainspecific) { - + if (request->variableListName.present == ObjectName_PR_domainspecific) + { char domainName[65]; - if (request->variableListName.choice.domainspecific.domainId.size > 64) { + if (request->variableListName.choice.domainspecific.domainId.size > 64) + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); goto exit_free_struct; } @@ -500,19 +528,23 @@ mmsServer_handleDefineNamedVariableListRequest( MmsDomain* domain = MmsDevice_getDomain(device, domainName); - if (domain == NULL) { + if (domain == NULL) + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); goto exit_free_struct; } #if (CONFIG_MMS_SERVER_CONFIG_SERVICES_AT_RUNTIME == 1) - if (LinkedList_size(domain->namedVariableLists) < connection->server->maxDomainSpecificDataSets) { + if (LinkedList_size(domain->namedVariableLists) < connection->server->maxDomainSpecificDataSets) + { #else - if (LinkedList_size(domain->namedVariableLists) < CONFIG_MMS_MAX_NUMBER_OF_DOMAIN_SPECIFIC_DATA_SETS) { + if (LinkedList_size(domain->namedVariableLists) < CONFIG_MMS_MAX_NUMBER_OF_DOMAIN_SPECIFIC_DATA_SETS) + { #endif char variableListName[65]; - if (request->variableListName.choice.domainspecific.itemId.size > 64) { + if (request->variableListName.choice.domainspecific.itemId.size > 64) + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); goto exit_free_struct; } @@ -521,24 +553,28 @@ mmsServer_handleDefineNamedVariableListRequest( request->variableListName.choice.domainspecific.itemId.buf, request->variableListName.choice.domainspecific.itemId.size, sizeof(variableListName)); - if (MmsDomain_getNamedVariableList(domain, variableListName) != NULL) { + if (MmsDomain_getNamedVariableList(domain, variableListName)) + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_DEFINITION_OBJECT_EXISTS); } - else { + else + { MmsError mmsError; MmsNamedVariableList namedVariableList = createNamedVariableList(connection->server, domain, device, request, variableListName, &mmsError); - if (namedVariableList != NULL) { - + if (namedVariableList) + { mmsError = mmsServer_callVariableListChangedHandler(MMS_VARLIST_CREATE, MMS_DOMAIN_SPECIFIC, domain, variableListName, connection); - if (mmsError == MMS_ERROR_NONE) { + if (mmsError == MMS_ERROR_NONE) + { MmsDomain_addNamedVariableList(domain, namedVariableList); createDefineNamedVariableListResponse(invokeId, response); } - else { + else + { MmsNamedVariableList_destroy(namedVariableList); mmsMsg_createServiceErrorPdu(invokeId, response, mmsError); } @@ -549,20 +585,21 @@ mmsServer_handleDefineNamedVariableListRequest( } else mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_RESOURCE_CAPABILITY_UNAVAILABLE); - - } - else if (request->variableListName.present == ObjectName_PR_aaspecific) { - + else if (request->variableListName.present == ObjectName_PR_aaspecific) + { #if (CONFIG_MMS_SERVER_CONFIG_SERVICES_AT_RUNTIME == 1) - if (LinkedList_size(connection->namedVariableLists) < connection->server->maxAssociationSpecificDataSets) { + if (LinkedList_size(connection->namedVariableLists) < connection->server->maxAssociationSpecificDataSets) + { #else - if (LinkedList_size(connection->namedVariableLists) < CONFIG_MMS_MAX_NUMBER_OF_ASSOCIATION_SPECIFIC_DATA_SETS) { + if (LinkedList_size(connection->namedVariableLists) < CONFIG_MMS_MAX_NUMBER_OF_ASSOCIATION_SPECIFIC_DATA_SETS) + { #endif char variableListName[65]; - if (request->variableListName.choice.aaspecific.size > 64) { + if (request->variableListName.choice.aaspecific.size > 64) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); goto exit_free_struct; } @@ -571,26 +608,29 @@ mmsServer_handleDefineNamedVariableListRequest( request->variableListName.choice.aaspecific.buf, request->variableListName.choice.aaspecific.size, sizeof(variableListName)); - if (MmsServerConnection_getNamedVariableList(connection, variableListName) != NULL) { + if (MmsServerConnection_getNamedVariableList(connection, variableListName)) + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_DEFINITION_OBJECT_EXISTS); } - else { + else + { MmsError mmsError; MmsNamedVariableList namedVariableList = createNamedVariableList(connection->server, NULL, device, request, variableListName, &mmsError); - if (namedVariableList != NULL) { - - if (mmsServer_callVariableListChangedHandler(MMS_VARLIST_CREATE, MMS_ASSOCIATION_SPECIFIC, NULL, variableListName, connection) == MMS_ERROR_NONE) { + if (namedVariableList) + { + if (mmsServer_callVariableListChangedHandler(MMS_VARLIST_CREATE, MMS_ASSOCIATION_SPECIFIC, NULL, variableListName, connection) == MMS_ERROR_NONE) + { MmsServerConnection_addNamedVariableList(connection, namedVariableList); createDefineNamedVariableListResponse(invokeId, response); } - else { + else + { MmsNamedVariableList_destroy(namedVariableList); mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_ACCESS_DENIED); } - } else mmsMsg_createServiceErrorPdu(invokeId, response, mmsError); @@ -599,14 +639,16 @@ mmsServer_handleDefineNamedVariableListRequest( else mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_RESOURCE_CAPABILITY_UNAVAILABLE); } - else if (request->variableListName.present == ObjectName_PR_vmdspecific) { + else if (request->variableListName.present == ObjectName_PR_vmdspecific) + { LinkedList vmdScopeNVLs = MmsDevice_getNamedVariableLists(connection->server->device); - if (LinkedList_size(vmdScopeNVLs) < CONFIG_MMS_MAX_NUMBER_OF_VMD_SPECIFIC_DATA_SETS) { - + if (LinkedList_size(vmdScopeNVLs) < CONFIG_MMS_MAX_NUMBER_OF_VMD_SPECIFIC_DATA_SETS) + { char variableListName[65]; - if (request->variableListName.choice.vmdspecific.size > 64) { + if (request->variableListName.choice.vmdspecific.size > 64) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); goto exit_free_struct; } @@ -615,27 +657,31 @@ mmsServer_handleDefineNamedVariableListRequest( request->variableListName.choice.vmdspecific.buf, request->variableListName.choice.vmdspecific.size, sizeof(variableListName)); - if (mmsServer_getNamedVariableListWithName(MmsDevice_getNamedVariableLists(connection->server->device), variableListName) != NULL) { + if (mmsServer_getNamedVariableListWithName(MmsDevice_getNamedVariableLists(connection->server->device), variableListName)) + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_DEFINITION_OBJECT_EXISTS); } - else { + else + { MmsError mmsError; MmsNamedVariableList namedVariableList = createNamedVariableList(connection->server, NULL, device, request, variableListName, &mmsError); - if (namedVariableList != NULL) { + if (namedVariableList) + { if (mmsServer_callVariableListChangedHandler(MMS_VARLIST_CREATE, MMS_VMD_SPECIFIC, NULL, variableListName, connection) - == MMS_ERROR_NONE) { + == MMS_ERROR_NONE) + { LinkedList_add(vmdScopeNVLs, (void*) namedVariableList); createDefineNamedVariableListResponse(invokeId, response); } - else { + else + { MmsNamedVariableList_destroy(namedVariableList); mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_ACCESS_DENIED); } - } } } @@ -708,11 +754,13 @@ createGetNamedVariableListAttributesResponse(int invokeId, ByteBuffer* response, varListResponse->listOfVariable.list.array[i]->variableSpecification.choice.name.choice. domainspecific.itemId.size = strlen(variableEntry->variableName); - if (variableEntry->arrayIndex != -1) { + if (variableEntry->arrayIndex != -1) + { varListResponse->listOfVariable.list.array[i]->alternateAccess = mmsClient_createAlternateAccessIndexComponent(variableEntry->arrayIndex, variableEntry->componentName); } - else if (variableEntry->componentName) { + else if (variableEntry->componentName) + { varListResponse->listOfVariable.list.array[i]->alternateAccess = mmsClient_createAlternateAccessComponent(variableEntry->componentName); } @@ -742,7 +790,8 @@ mmsServer_handleGetNamedVariableListAttributesRequest( asn_dec_rval_t rval = ber_decode(NULL, &asn_DEF_GetNamedVariableListAttributesRequest, (void**) &request, buffer + bufPos, maxBufPos - bufPos); - if (rval.code != RC_OK) { + if (rval.code != RC_OK) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); goto exit_function; } @@ -753,7 +802,8 @@ mmsServer_handleGetNamedVariableListAttributesRequest( char itemName[65]; if ((request->choice.domainspecific.domainId.size > 64) || - (request->choice.domainspecific.itemId.size > 64)) { + (request->choice.domainspecific.itemId.size > 64)) + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OTHER); goto exit_function; } @@ -776,35 +826,36 @@ mmsServer_handleGetNamedVariableListAttributesRequest( { MmsError accessError = mmsServer_callVariableListChangedHandler(MMS_VARLIST_GET_DIRECTORY, MMS_DOMAIN_SPECIFIC, domain, varList->name, connection); - if (accessError == MMS_ERROR_NONE) { - if (createGetNamedVariableListAttributesResponse(invokeId, response, varList) == false) { - + if (accessError == MMS_ERROR_NONE) + { + if (createGetNamedVariableListAttributesResponse(invokeId, response, varList) == false) + { /* encoding failed - probably because buffer size is too small for message */ ByteBuffer_setSize(response, 0); mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_RESOURCE_OTHER); } } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS get named variable list attributes: variable list %s access error: %i\n", varList->name, accessError); mmsMsg_createServiceErrorPdu(invokeId, response, accessError); } - } else mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); } else mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); - } #if (MMS_DYNAMIC_DATA_SETS == 1) else if (request->present == ObjectName_PR_aaspecific) { char listName[65]; - if (request->choice.aaspecific.size > 64) { + if (request->choice.aaspecific.size > 64) + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OTHER); goto exit_function; } @@ -820,15 +871,16 @@ mmsServer_handleGetNamedVariableListAttributesRequest( if (accessError == MMS_ERROR_NONE) { - if (createGetNamedVariableListAttributesResponse(invokeId, response, varList) == false) { - + if (createGetNamedVariableListAttributesResponse(invokeId, response, varList) == false) + { /* encoding failed - probably because buffer size is too small for message */ ByteBuffer_setSize(response, 0); mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_RESOURCE_OTHER); } } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS get named variable list attributes: variable list %s access error: %i\n", varList->name, accessError); mmsMsg_createServiceErrorPdu(invokeId, response, accessError); @@ -842,7 +894,8 @@ mmsServer_handleGetNamedVariableListAttributesRequest( { char listName[65]; - if (request->choice.vmdspecific.size > 64) { + if (request->choice.vmdspecific.size > 64) + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OTHER); goto exit_function; } @@ -860,15 +913,16 @@ mmsServer_handleGetNamedVariableListAttributesRequest( if (accessError == MMS_ERROR_NONE) { - if (createGetNamedVariableListAttributesResponse(invokeId, response, varList) == false) { - + if (createGetNamedVariableListAttributesResponse(invokeId, response, varList) == false) + { /* encoding failed - probably because buffer size is too small for message */ ByteBuffer_setSize(response, 0); mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_RESOURCE_OTHER); } } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS get named variable list attributes: variable list %s access error: %i\n", varList->name, accessError); mmsMsg_createServiceErrorPdu(invokeId, response, accessError); @@ -877,7 +931,8 @@ mmsServer_handleGetNamedVariableListAttributesRequest( else mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); } - else { + else + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_ACCESS_UNSUPPORTED); } diff --git a/src/mms/iso_mms/server/mms_read_service.c b/src/mms/iso_mms/server/mms_read_service.c index 043e03ce..a675c7a6 100644 --- a/src/mms/iso_mms/server/mms_read_service.c +++ b/src/mms/iso_mms/server/mms_read_service.c @@ -49,14 +49,14 @@ addNamedVariableValue(MmsVariableSpecification* namedVariable, MmsServerConnecti { MmsValue* value = NULL; - if (namedVariable->type == MMS_STRUCTURE) { - + if (namedVariable->type == MMS_STRUCTURE) + { value = mmsServer_getValue(connection->server, domain, itemId, connection, false); - if (value != NULL) + if (value) goto exit_function; - else { - + else + { int componentCount = namedVariable->typeSpec.structure.elementCount; value = MmsValue_createEmptyStructure(componentCount); @@ -65,7 +65,8 @@ addNamedVariableValue(MmsVariableSpecification* namedVariable, MmsServerConnecti int i; - for (i = 0; i < componentCount; i++) { + for (i = 0; i < componentCount; i++) + { char newNameIdStr[65]; StringUtils_createStringInBuffer(newNameIdStr, 65, 3, itemId, "$", @@ -75,7 +76,8 @@ addNamedVariableValue(MmsVariableSpecification* namedVariable, MmsServerConnecti addNamedVariableValue(namedVariable->typeSpec.structure.elements[i], connection, domain, newNameIdStr); - if (element == NULL) { + if (element == NULL) + { MmsValue_delete(value); value = NULL; break; @@ -85,7 +87,8 @@ addNamedVariableValue(MmsVariableSpecification* namedVariable, MmsServerConnecti } } } - else { + else + { value = mmsServer_getValue(connection->server, domain, itemId, connection, false); } @@ -104,7 +107,6 @@ addComplexValueToResultList(MmsVariableSpecification* namedVariable, LinkedList_add(typedValues, value); } - static void appendValueToResultList(MmsValue* value, LinkedList values) { @@ -113,7 +115,8 @@ appendValueToResultList(MmsValue* value, LinkedList values) } static void -appendErrorToResultList(LinkedList values, MmsDataAccessError errorType) { +appendErrorToResultList(LinkedList values, MmsDataAccessError errorType) +{ MmsValue* value = MmsValue_newDataAccessError(errorType); MmsValue_setDeletable(value); appendValueToResultList(value, values); @@ -124,7 +127,8 @@ deleteValueList(LinkedList values) { LinkedList value = LinkedList_getNext(values); - while (value) { + while (value) + { MmsValue* typedValue = (MmsValue*) (value->data); MmsValue_deleteConditional(typedValue); @@ -140,40 +144,43 @@ getComponent(MmsServerConnection connection, MmsDomain* domain, AlternateAccess_ { MmsValue* retValue = NULL; - if (mmsServer_isComponentAccess(alternateAccess)) { + if (mmsServer_isComponentAccess(alternateAccess)) + { Identifier_t component = alternateAccess->list.array[0]->choice.unnamed->choice.selectAccess.choice.component; if (component.size > 129) goto exit_function; - if (namedVariable->type == MMS_STRUCTURE) { - + if (namedVariable->type == MMS_STRUCTURE) + { int i; - for (i = 0; i < namedVariable->typeSpec.structure.elementCount; i++) { - + for (i = 0; i < namedVariable->typeSpec.structure.elementCount; i++) + { if ((int) strlen(namedVariable->typeSpec.structure.elements[i]->name) - == component.size) { + == component.size) + { if (!strncmp(namedVariable->typeSpec.structure.elements[i]->name, (char*) component.buf, component.size)) { - if (strlen(variableName) + component.size < 199) { - + if (strlen(variableName) + component.size < 199) + { StringUtils_appendString(variableName, 200, "$"); /* here we need strncat because component.buf is not null terminated! */ strncat(variableName, (const char*)component.buf, (size_t)component.size); - if (alternateAccess->list.array[0]->choice.unnamed->choice.selectAlternateAccess.alternateAccess - != NULL) { + if (alternateAccess->list.array[0]->choice.unnamed->choice.selectAlternateAccess.alternateAccess) + { retValue = getComponent(connection, domain, alternateAccess->list.array[0]->choice.unnamed->choice.selectAlternateAccess.alternateAccess, namedVariable->typeSpec.structure.elements[i], variableName); } - else { + else + { retValue = mmsServer_getValue(connection->server, domain, variableName, connection, false); } } @@ -210,7 +217,8 @@ alternateArrayAccess(MmsServerConnection connection, { if (mmsServer_isAccessToArrayComponent(alternateAccess)) { - if (namedVariable->typeSpec.array.elementTypeSpec->type == MMS_STRUCTURE) { + if (namedVariable->typeSpec.array.elementTypeSpec->type == MMS_STRUCTURE) + { MmsValue* structValue = MmsValue_getElement(arrayValue, index); if (structValue != NULL) @@ -218,7 +226,8 @@ alternateArrayAccess(MmsServerConnection connection, namedVariable, structValue, NULL); } } - else { + else + { value = MmsValue_getElement(arrayValue, index); } } @@ -235,7 +244,8 @@ alternateArrayAccess(MmsServerConnection connection, elementValue = MmsValue_getElement(arrayValue, index); - if (!MmsValue_isDeletable(elementValue)) { + if (!MmsValue_isDeletable(elementValue)) + { elementValue = MmsValue_clone(elementValue); elementValue->deleteValue = 1; } @@ -256,7 +266,9 @@ alternateArrayAccess(MmsServerConnection connection, appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); } - else { /* invalid access */ + else + { + /* invalid access */ if (DEBUG_MMS_SERVER) printf("Invalid alternate access\n"); appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); @@ -267,8 +279,8 @@ static void addNamedVariableToResultList(MmsVariableSpecification* namedVariable, MmsDomain* domain, char* nameIdStr, LinkedList /**/ values, MmsServerConnection connection, AlternateAccess_t* alternateAccess, bool isAccessToSingleVariable) { - if (namedVariable) { - + if (namedVariable) + { if (DEBUG_MMS_SERVER) printf("MMS read: found named variable %s with search string %s\n", namedVariable->name, nameIdStr); @@ -283,45 +295,56 @@ addNamedVariableToResultList(MmsVariableSpecification* namedVariable, MmsDomain* MmsValue* value = getComponent(connection, domain, alternateAccess, namedVariable, variableName); - if (value) { + if (value) + { appendValueToResultList(value, values); } - else { + else + { appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); } } - else { + else + { MmsValue* value = mmsServer_getValue(connection->server, domain, nameIdStr, connection, isAccessToSingleVariable); - if (value) { + if (value) + { appendValueToResultList(value, values); } - else { + else + { addComplexValueToResultList(namedVariable, values, connection, domain, nameIdStr); } } } - else if (namedVariable->type == MMS_ARRAY) { - - if (alternateAccess) { + else if (namedVariable->type == MMS_ARRAY) + { + if (alternateAccess) + { alternateArrayAccess(connection, alternateAccess, domain, nameIdStr, values, namedVariable); } - else { /* return complete array */ + else + { + /* return complete array */ MmsValue* value = mmsServer_getValue(connection->server, domain, nameIdStr, connection, isAccessToSingleVariable); appendValueToResultList(value, values); } } - else { - - if (alternateAccess) { + else + { + if (alternateAccess) + { appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); } - else { + else + { MmsValue* value = mmsServer_getValue(connection->server, domain, nameIdStr, connection, isAccessToSingleVariable); - if (value == NULL) { + if (value == NULL) + { if (DEBUG_MMS_SERVER) printf("MMS read: value of known variable is not found. Maybe illegal access to array element!\n"); @@ -336,7 +359,6 @@ addNamedVariableToResultList(MmsVariableSpecification* namedVariable, MmsDomain* appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); } - static bool isSpecWithResult(ReadRequest_t* read) { @@ -394,13 +416,11 @@ encodeVariableAccessSpecification(VarAccessSpec* accessSpec, uint8_t* buffer, in } else if (accessSpec->specific == 1) { /* domain-specific */ bufPos = BerEncoder_encodeTL(0xa1, specificityLength, buffer, bufPos); - } else { /* association-specific */ bufPos = BerEncoder_encodeTL(0xa2, specificityLength, buffer, bufPos); } - if (accessSpec->domainId != NULL) bufPos = BerEncoder_encodeStringWithTag(0x1a, accessSpec->domainId, buffer, bufPos); @@ -422,9 +442,8 @@ encodeReadResponse(MmsServerConnection connection, uint32_t varAccessSpecSize = 0; - if (accessSpec != NULL) { + if (accessSpec) varAccessSpecSize = encodeVariableAccessSpecification(accessSpec, NULL, 0, false); - } /* determine BER encoded message sizes */ uint32_t accessResultSize = 0; @@ -564,13 +583,15 @@ handleReadListOfVariablesRequest( if (DEBUG_MMS_SERVER) printf("MMS_SERVER: READ domainId: (%s) nameId: (%s)\n", domainIdStr, nameIdStr); - if (domain == NULL) { + if (domain == NULL) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: READ domain %s not found!\n", domainIdStr); appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); } - else { + else + { MmsVariableSpecification* namedVariable = MmsDomain_getNamedVariable(domain, nameIdStr); if (namedVariable == NULL) @@ -602,13 +623,15 @@ handleReadListOfVariablesRequest( } #endif /* (CONFIG_MMS_SUPPORT_VMD_SCOPE_NAMED_VARIABLES == 1) */ - else { + else + { appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); if (DEBUG_MMS_SERVER) printf("MMS_SERVER: READ object name type not supported!\n"); } } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: READ varspec type not supported!\n"); mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); goto exit; @@ -625,8 +648,10 @@ handleReadListOfVariablesRequest( if (value) { - if (MmsValue_getType(value) == MMS_DATA_ACCESS_ERROR) { - if (MmsValue_getDataAccessError(value) == DATA_ACCESS_ERROR_NO_RESPONSE) { + if (MmsValue_getType(value) == MMS_DATA_ACCESS_ERROR) + { + if (MmsValue_getDataAccessError(value) == DATA_ACCESS_ERROR_NO_RESPONSE) + { sendResponse = false; break; } @@ -672,10 +697,12 @@ addNamedVariableToNamedVariableListResultList(MmsVariableSpecification* namedVar MmsValue* subElementValue = MmsVariableSpecification_getChildValue(elementType, elementValue, listEntry->componentName); - if (subElementValue) { + if (subElementValue) + { appendValueToResultList(subElementValue, values); } - else { + else + { if (DEBUG_IED_SERVER) printf("IED_SERVER: ERROR - component %s of array element not found\n", listEntry->componentName); } @@ -683,7 +710,6 @@ addNamedVariableToNamedVariableListResultList(MmsVariableSpecification* namedVar else { appendValueToResultList(elementValue, values); } - } else { @@ -693,11 +719,13 @@ addNamedVariableToNamedVariableListResultList(MmsVariableSpecification* namedVar appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); } } - else { + else + { appendValueToResultList(value, values); } } - else { + else + { appendErrorToResultList(values, DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT); } } @@ -785,21 +813,22 @@ handleReadNamedVariableListRequest( if (namedList) { - MmsError accessError = mmsServer_callVariableListChangedHandler(MMS_VARLIST_READ, MMS_DOMAIN_SPECIFIC, domain, namedList->name, connection); - if (accessError == MMS_ERROR_NONE) { + if (accessError == MMS_ERROR_NONE) + { createNamedVariableListResponse(connection, namedList, invokeId, response, isSpecWithResult(read), &accessSpec); } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS read: named variable list %s access error: %i\n", nameIdStr, accessError); mmsMsg_createServiceErrorPdu(invokeId, response, accessError); } - } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS read: named variable list %s not found!\n", nameIdStr); mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); } @@ -833,7 +862,8 @@ handleReadNamedVariableListRequest( createNamedVariableListResponse(connection, namedList, invokeId, response, isSpecWithResult(read), &accessSpec); } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS read: VMD specific named variable list %s access error: %i\n", listName, accessError); mmsMsg_createServiceErrorPdu(invokeId, response, accessError); @@ -870,7 +900,8 @@ handleReadNamedVariableListRequest( createNamedVariableListResponse(connection, namedList, invokeId, response, isSpecWithResult(read), &accessSpec); } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS read: association specific named variable list %s access error: %i\n", listName, accessError); mmsMsg_createServiceErrorPdu(invokeId, response, accessError); @@ -898,7 +929,8 @@ mmsServer_handleReadRequest( asn_dec_rval_t rval = ber_decode(NULL, &asn_DEF_MmsPdu, (void**) &mmsPdu, buffer, maxBufPos); - if (rval.code != RC_OK) { + if (rval.code != RC_OK) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); goto exit_function; } @@ -909,7 +941,8 @@ mmsServer_handleReadRequest( { request = &(mmsPdu->choice.confirmedRequestPdu.confirmedServiceRequest.choice.read); } - else { + else + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); goto exit_function; } @@ -932,7 +965,8 @@ mmsServer_handleReadRequest( MmsServer_unlockModel(connection->server); } #endif - else { + else + { mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_ACCESS_UNSUPPORTED); } @@ -965,4 +999,3 @@ MmsServerConnection_sendReadResponse(MmsServerConnection self, uint32_t invokeId if (handlerMode == false) IsoConnection_unlock(self->isoConnection); } - diff --git a/src/mms/iso_mms/server/mms_server_common.c b/src/mms/iso_mms/server/mms_server_common.c index 545702be..36f3081d 100644 --- a/src/mms/iso_mms/server/mms_server_common.c +++ b/src/mms/iso_mms/server/mms_server_common.c @@ -1,7 +1,7 @@ /* * mms_server_common.c * - * Copyright 2013-2020 Michael Zillgith + * Copyright 2013-2024 Michael Zillgith * * This file is part of libIEC61850. * @@ -32,7 +32,8 @@ mmsServer_write_out(const void *buffer, size_t size, void *app_key) int appendedBytes = ByteBuffer_append(writeBuffer, (uint8_t*) buffer, size); - if (appendedBytes == -1) { + if (appendedBytes == -1) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: message exceeds maximum PDU size!\n"); } @@ -156,9 +157,7 @@ mapErrorTypeToErrorClass(MmsError errorType, uint8_t* tag, uint8_t* value) *tag = 0x8c; /* others */ *value = 0; break; - } - } void @@ -240,7 +239,8 @@ mmsMsg_createInitiateErrorPdu(ByteBuffer* response, uint8_t initiateErrorCode) bool mmsServer_isIndexAccess(AlternateAccess_t* alternateAccess) { - if (alternateAccess->list.array[0]->present == AlternateAccess__Member_PR_unnamed) { + if (alternateAccess->list.array[0]->present == AlternateAccess__Member_PR_unnamed) + { if ((alternateAccess->list.array[0]->choice.unnamed->choice.selectAccess.present == AlternateAccessSelection__selectAccess_PR_index) || (alternateAccess->list.array[0]->choice.unnamed->choice.selectAccess.present @@ -256,10 +256,11 @@ mmsServer_isIndexAccess(AlternateAccess_t* alternateAccess) bool mmsServer_isComponentAccess(AlternateAccess_t* alternateAccess) { - if (alternateAccess->list.array[0]->present - == AlternateAccess__Member_PR_unnamed) { + if (alternateAccess->list.array[0]->present == AlternateAccess__Member_PR_unnamed) + { if (alternateAccess->list.array[0]->choice.unnamed->choice.selectAccess.present - == AlternateAccessSelection__selectAccess_PR_component) { + == AlternateAccessSelection__selectAccess_PR_component) + { return true; } } @@ -410,10 +411,12 @@ mmsServer_getNamedVariableListWithName(LinkedList namedVariableLists, const char LinkedList element = LinkedList_getNext(namedVariableLists); - while (element) { + while (element) + { MmsNamedVariableList varList = (MmsNamedVariableList) element->data; - if (strcmp(MmsNamedVariableList_getName(varList), variableListName) == 0) { + if (strcmp(MmsNamedVariableList_getName(varList), variableListName) == 0) + { variableList = varList; break; } @@ -430,11 +433,12 @@ mmsServer_deleteVariableList(LinkedList namedVariableLists, char* variableListNa LinkedList previousElement = namedVariableLists; LinkedList element = LinkedList_getNext(namedVariableLists); - while (element) { + while (element) + { MmsNamedVariableList varList = (MmsNamedVariableList) element->data; - if (strcmp(MmsNamedVariableList_getName(varList), variableListName) - == 0) { + if (strcmp(MmsNamedVariableList_getName(varList), variableListName) == 0) + { previousElement->next = element->next; GLOBAL_FREEMEM(element); MmsNamedVariableList_destroy(varList); diff --git a/src/mms/iso_mms/server/mms_server_connection.c b/src/mms/iso_mms/server/mms_server_connection.c index 4f914081..d01ce40a 100644 --- a/src/mms/iso_mms/server/mms_server_connection.c +++ b/src/mms/iso_mms/server/mms_server_connection.c @@ -73,7 +73,8 @@ mmsMsg_encodeMmsRejectPdu(uint32_t* invokeId, int rejectType, int rejectReason, uint32_t rejectPduLength = 3; - if (invokeId != NULL) { + if (invokeId) + { invokeIdLength = BerEncoder_UInt32determineEncodedSize(*invokeId); rejectPduLength += 2 + invokeIdLength; } @@ -81,7 +82,8 @@ mmsMsg_encodeMmsRejectPdu(uint32_t* invokeId, int rejectType, int rejectReason, /* Encode reject PDU */ bufPos = BerEncoder_encodeTL(0xa4, rejectPduLength, buffer, bufPos); - if (invokeId != NULL) { + if (invokeId) + { /* original invokeId */ bufPos = BerEncoder_encodeTL(0x80, invokeIdLength, buffer, bufPos); bufPos = BerEncoder_encodeUInt32(*invokeId, buffer, bufPos); @@ -143,31 +145,34 @@ handleConfirmedRequestPdu( { uint32_t invokeId = 0; - while (bufPos < maxBufPos) { + while (bufPos < maxBufPos) + { uint8_t tag = buffer[bufPos++]; int length; bool extendedTag = false; - if ((tag & 0x1f) == 0x1f) { + if ((tag & 0x1f) == 0x1f) + { extendedTag = true; tag = buffer[bufPos++]; } bufPos = BerDecoder_decodeLength(buffer, &length, bufPos, maxBufPos); - if (bufPos < 0) { + if (bufPos < 0) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); return; } - if (extendedTag) { + if (extendedTag) + { switch (tag) { #if (MMS_OBTAIN_FILE_SERVICE == 1) - #if (CONFIG_MMS_SERVER_CONFIG_SERVICES_AT_RUNTIME == 1) case 0x2e: /* obtain-file */ if (self->server->fileServiceEnabled) @@ -300,7 +305,8 @@ handleConfirmedRequestPdu( break; } } - else { + else + { switch (tag) { case 0x02: /* invoke Id */ @@ -424,24 +430,25 @@ handleConfirmedErrorPdu( bool hasInvokeId = false; MmsServiceError serviceError; - if (mmsMsg_parseConfirmedErrorPDU(buffer, bufPos, maxBufPos, &invokeId, &hasInvokeId, &serviceError)) { - + if (mmsMsg_parseConfirmedErrorPDU(buffer, bufPos, maxBufPos, &invokeId, &hasInvokeId, &serviceError)) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: Handle confirmed error PDU: invokeID: %u\n", invokeId); - if (hasInvokeId) { + if (hasInvokeId) + { /* check if message is related to an existing file upload task */ int i; - for (i = 0; i < CONFIG_MMS_SERVER_MAX_GET_FILE_TASKS; i++) { - + for (i = 0; i < CONFIG_MMS_SERVER_MAX_GET_FILE_TASKS; i++) + { #if (CONFIG_MMS_THREADLESS_STACK != 1) Semaphore_wait(self->server->fileUploadTasks[i].taskLock); #endif - if (self->server->fileUploadTasks[i].state != MMS_FILE_UPLOAD_STATE_NOT_USED) { - - if (self->server->fileUploadTasks[i].lastRequestInvokeId == invokeId) { - + if (self->server->fileUploadTasks[i].state != MMS_FILE_UPLOAD_STATE_NOT_USED) + { + if (self->server->fileUploadTasks[i].lastRequestInvokeId == invokeId) + { self->server->fileUploadTasks[i].state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_SOURCE; #if (CONFIG_MMS_THREADLESS_STACK != 1) @@ -449,7 +456,6 @@ handleConfirmedErrorPdu( #endif return; } - } #if (CONFIG_MMS_THREADLESS_STACK != 1) @@ -457,9 +463,9 @@ handleConfirmedErrorPdu( #endif } } - } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: error parsing confirmed error PDU\n"); } @@ -469,7 +475,8 @@ static MmsObtainFileTask getUploadTaskByInvokeId(MmsServer mmsServer, uint32_t invokeId) { int i; - for (i = 0; i < CONFIG_MMS_SERVER_MAX_GET_FILE_TASKS; i++) { + for (i = 0; i < CONFIG_MMS_SERVER_MAX_GET_FILE_TASKS; i++) + { if ((mmsServer->fileUploadTasks[i].state != 0) && (mmsServer->fileUploadTasks[i].lastRequestInvokeId == invokeId)) return &(mmsServer->fileUploadTasks[i]); } @@ -486,19 +493,23 @@ mmsFileReadHandler(uint32_t invokeId, void* parameter, MmsError mmsError, int32_ MmsObtainFileTask task = (MmsObtainFileTask) parameter; - if (mmsError == MMS_ERROR_NONE) { + if (mmsError == MMS_ERROR_NONE) + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: file %i received %u bytes\n", task->frmsId, bytesReceived); - if(task->fileHandle){ + if(task->fileHandle) + { FileSystem_writeFile(task->fileHandle, buffer, bytesReceived); } - else{ + else + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: problem reading file %i file already closed\n", task->frmsId); } } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: problem reading file %i (error code: %i)\n", task->frmsId, mmsError); } @@ -512,7 +523,8 @@ handleConfirmedResponsePdu( { uint32_t invokeId = 0; - while (bufPos < maxBufPos) { + while (bufPos < maxBufPos) + { int startBufPos = bufPos; uint8_t tag = buffer[bufPos++]; @@ -520,19 +532,22 @@ handleConfirmedResponsePdu( bool extendedTag = false; - if ((tag & 0x1f) == 0x1f) { + if ((tag & 0x1f) == 0x1f) + { extendedTag = true; tag = buffer[bufPos++]; } bufPos = BerDecoder_decodeLength(buffer, &length, bufPos, maxBufPos); - if (bufPos < 0) { + if (bufPos < 0) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_UNRECOGNIZED_SERVICE, response); return; } - if (extendedTag) { + if (extendedTag) + { switch (tag) { @@ -545,15 +560,17 @@ handleConfirmedResponsePdu( { MmsObtainFileTask fileTask = getUploadTaskByInvokeId(self->server, invokeId); - if (fileTask != NULL) { - + if (fileTask) + { int32_t frmsId; - if (mmsMsg_parseFileOpenResponse(buffer, startBufPos, maxBufPos, &frmsId, NULL, NULL)) { + if (mmsMsg_parseFileOpenResponse(buffer, startBufPos, maxBufPos, &frmsId, NULL, NULL)) + { fileTask->frmsId = frmsId; fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_FILE_READ; } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS_SERVER: error parsing file-open-response\n"); fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_SOURCE; @@ -576,24 +593,29 @@ handleConfirmedResponsePdu( MmsObtainFileTask fileTask = getUploadTaskByInvokeId(self->server, invokeId); - if (fileTask != NULL) { - + if (fileTask) + { bool moreFollows; - if(fileTask->fileHandle == NULL){ + if(fileTask->fileHandle == NULL) + { fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_DESTINATION; } - else{ - if (mmsMsg_parseFileReadResponse(buffer, startBufPos, maxBufPos, invokeId, fileTask->frmsId, &moreFollows, mmsFileReadHandler, (void*) fileTask)) { - - if (moreFollows) { + else + { + if (mmsMsg_parseFileReadResponse(buffer, startBufPos, maxBufPos, invokeId, fileTask->frmsId, &moreFollows, mmsFileReadHandler, (void*) fileTask)) + { + if (moreFollows) + { fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_FILE_READ; } - else { + else + { fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_FILE_CLOSE; } } - else { + else + { fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_ERROR_SOURCE; if (DEBUG_MMS_SERVER) @@ -601,7 +623,8 @@ handleConfirmedResponsePdu( } } } - else { + else + { /* ignore */ if (DEBUG_MMS_SERVER) @@ -618,13 +641,17 @@ handleConfirmedResponsePdu( MmsObtainFileTask fileTask = getUploadTaskByInvokeId(self->server, invokeId); - if (fileTask != NULL) { - if(fileTask->fileHandle){ + if (fileTask) + { + if(fileTask->fileHandle) + { FileSystem_closeFile(fileTask->fileHandle); } + fileTask->state = MMS_FILE_UPLOAD_STATE_SEND_OBTAIN_FILE_RESPONSE; } - else { + else + { /* ignore */ if (DEBUG_MMS_SERVER) @@ -640,7 +667,8 @@ handleConfirmedResponsePdu( break; } } - else { + else + { switch (tag) { case 0x02: /* invoke Id */ @@ -762,24 +790,27 @@ MmsServerConnection_init(MmsServerConnection connection, MmsServer server, IsoCo else self = connection; - self->maxServOutstandingCalled = 0; - self->maxServOutstandingCalling = 0; - self->maxPduSize = CONFIG_MMS_MAXIMUM_PDU_SIZE; - self->dataStructureNestingLevel = 0; - self->server = server; - self->isoConnection = isoCon; + if (self) + { + self->maxServOutstandingCalled = 0; + self->maxServOutstandingCalling = 0; + self->maxPduSize = CONFIG_MMS_MAXIMUM_PDU_SIZE; + self->dataStructureNestingLevel = 0; + self->server = server; + self->isoConnection = isoCon; #if (MMS_DYNAMIC_DATA_SETS == 1) - self->namedVariableLists = LinkedList_create(); + self->namedVariableLists = LinkedList_create(); #endif #if (MMS_OBTAIN_FILE_SERVICE == 1) - self->lastRequestInvokeId = 0; + self->lastRequestInvokeId = 0; #endif - IsoConnection_installListener(isoCon, messageReceived, - (UserLayerTickHandler) connectionTickHandler, - (void*) self); + IsoConnection_installListener(isoCon, messageReceived, + (UserLayerTickHandler) connectionTickHandler, + (void*) self); + } return self; } @@ -894,6 +925,3 @@ MmsServerConnection_getFilesystemBasepath(MmsServerConnection self) return CONFIG_VIRTUAL_FILESTORE_BASEPATH; #endif } - - - diff --git a/src/mms/iso_mms/server/mms_value_cache.c b/src/mms/iso_mms/server/mms_value_cache.c index 4880d58c..57a16bdf 100644 --- a/src/mms/iso_mms/server/mms_value_cache.c +++ b/src/mms/iso_mms/server/mms_value_cache.c @@ -27,130 +27,135 @@ #include "stack_config.h" struct sMmsValueCache { - MmsDomain* domain; - Map map; + MmsDomain* domain; + Map map; }; typedef struct sMmsValueCacheEntry { - MmsValue* value; - MmsVariableSpecification* typeSpec; + MmsValue* value; + MmsVariableSpecification* typeSpec; } MmsValueCacheEntry; MmsValueCache MmsValueCache_create(MmsDomain* domain) { - MmsValueCache self = (MmsValueCache) GLOBAL_CALLOC(1, sizeof(struct sMmsValueCache)); + MmsValueCache self = (MmsValueCache) GLOBAL_CALLOC(1, sizeof(struct sMmsValueCache)); - self->domain = domain; + if (self) + { + self->domain = domain; - self->map = StringMap_create(); + self->map = StringMap_create(); + } - return self; + return self; } void MmsValueCache_insertValue(MmsValueCache self, char* itemId, MmsValue* value) { - MmsVariableSpecification* typeSpec = MmsDomain_getNamedVariable(self->domain, itemId); + MmsVariableSpecification* typeSpec = MmsDomain_getNamedVariable(self->domain, itemId); - if (typeSpec != NULL) { - MmsValueCacheEntry* cacheEntry = (MmsValueCacheEntry*) GLOBAL_MALLOC(sizeof(MmsValueCacheEntry)); + if (typeSpec) + { + MmsValueCacheEntry* cacheEntry = (MmsValueCacheEntry*) GLOBAL_MALLOC(sizeof(MmsValueCacheEntry)); - cacheEntry->value = value; - cacheEntry->typeSpec = typeSpec; + cacheEntry->value = value; + cacheEntry->typeSpec = typeSpec; - Map_addEntry(self->map, StringUtils_copyString(itemId), cacheEntry); - } - else - if (DEBUG) - printf("Cannot insert value into cache %s : no typeSpec found!\n", itemId); + Map_addEntry(self->map, StringUtils_copyString(itemId), cacheEntry); + } + else + if (DEBUG) + printf("Cannot insert value into cache %s : no typeSpec found!\n", itemId); } static char* getParentSubString(char* itemId) { - int len = strlen(itemId); + int len = strlen(itemId); - char* strPos = itemId + len; + char* strPos = itemId + len; - while (--strPos > itemId) { - if (*strPos == '$') { - *strPos = 0; - return itemId; - } - } + while (--strPos > itemId) + { + if (*strPos == '$') + { + *strPos = 0; + return itemId; + } + } - return NULL; + return NULL; } static const char* getChildSubString (const char* itemId, char* parentId) { - return itemId + strlen(parentId) + 1; + return itemId + strlen(parentId) + 1; } static MmsValue* searchCacheForValue(MmsValueCache self, const char* itemId, char* parentId, MmsVariableSpecification** outSpec) { - MmsValueCacheEntry* cacheEntry; - MmsValue* value = NULL; - - cacheEntry = (MmsValueCacheEntry*) Map_getEntry(self->map, (void*) parentId); - - if (cacheEntry == NULL) { - char* parentItemId = getParentSubString(parentId); + MmsValueCacheEntry* cacheEntry; + MmsValue* value = NULL; - if (parentItemId != NULL) { - value = searchCacheForValue(self, itemId, parentItemId, outSpec); - } - } - else { + cacheEntry = (MmsValueCacheEntry*) Map_getEntry(self->map, (void*) parentId); - const char* childId = getChildSubString(itemId, parentId); + if (cacheEntry == NULL) + { + char* parentItemId = getParentSubString(parentId); - MmsVariableSpecification* typeSpec = MmsDomain_getNamedVariable(self->domain, parentId); - value = MmsVariableSpecification_getChildValue(typeSpec, cacheEntry->value, childId); + if (parentItemId) + value = searchCacheForValue(self, itemId, parentItemId, outSpec); + } + else + { + const char* childId = getChildSubString(itemId, parentId); - if (outSpec) { - *outSpec = MmsVariableSpecification_getNamedVariableRecursive(typeSpec, childId); - } + MmsVariableSpecification* typeSpec = MmsDomain_getNamedVariable(self->domain, parentId); + value = MmsVariableSpecification_getChildValue(typeSpec, cacheEntry->value, childId); - } + if (outSpec) + { + *outSpec = MmsVariableSpecification_getNamedVariableRecursive(typeSpec, childId); + } + } - return value; + return value; } MmsValue* MmsValueCache_lookupValue(MmsValueCache self, const char* itemId, MmsVariableSpecification** outSpec) { - /* - * get value for first matching key substring! - * Then iterate the value for the exact value. + /* + * get value for first matching key substring! + * Then iterate the value for the exact value. */ - MmsValue* value = NULL; - - MmsValueCacheEntry* cacheEntry = (MmsValueCacheEntry*) Map_getEntry(self->map, (void*) itemId); + MmsValue* value = NULL; - if (cacheEntry) { + MmsValueCacheEntry* cacheEntry = (MmsValueCacheEntry*) Map_getEntry(self->map, (void*) itemId); - if (outSpec) { + if (cacheEntry) + { + if (outSpec) *outSpec = cacheEntry->typeSpec; - } return cacheEntry->value; - } - else { - char itemIdCopy[65]; - StringUtils_copyStringToBuffer(itemId, itemIdCopy); + } + else + { + char itemIdCopy[65]; + StringUtils_copyStringToBuffer(itemId, itemIdCopy); - char* parentItemId = getParentSubString(itemIdCopy); + char* parentItemId = getParentSubString(itemIdCopy); - if (parentItemId != NULL) { - value = searchCacheForValue(self, itemId, parentItemId, outSpec); - } - } + if (parentItemId) + value = searchCacheForValue(self, itemId, parentItemId, outSpec); + } - return value; + return value; } static MmsValue* @@ -161,46 +166,54 @@ searchCacheForValueEx(MmsValueCache self, const char* itemId, char* parentId, in cacheEntry = (MmsValueCacheEntry*) Map_getEntry(self->map, (void*) parentId); - if (cacheEntry == NULL) { + if (cacheEntry == NULL) + { char* parentItemId = getParentSubString(parentId); - if (parentItemId) { + if (parentItemId) + { value = searchCacheForValueEx(self, itemId, parentItemId, idx, componentId, outSpec); } } - else { - + else + { const char* childId = getChildSubString(itemId, parentId); - if (childId) { + if (childId) + { MmsVariableSpecification* typeSpec = MmsDomain_getNamedVariable(self->domain, parentId); value = MmsVariableSpecification_getChildValue(typeSpec, cacheEntry->value, childId); - if (value) { - - if (idx != -1) { - if (MmsValue_getType(value) == MMS_ARRAY) { + if (value) + { + if (idx != -1) + { + if (MmsValue_getType(value) == MMS_ARRAY) + { MmsValue* elementValue = MmsValue_getElement(value, idx); - if (elementValue) { - if ((componentId != NULL) && (componentId[0] != 0)) { - + if (elementValue) + { + if ((componentId != NULL) && (componentId[0] != 0)) + { MmsVariableSpecification* childSpec = MmsVariableSpecification_getNamedVariableRecursive(typeSpec, childId); - if (childSpec) { + if (childSpec) + { MmsVariableSpecification* elementSpec = childSpec->typeSpec.array.elementTypeSpec; - if (elementSpec) { + if (elementSpec) + { MmsValue* componentValue = MmsVariableSpecification_getChildValue(elementSpec, elementValue, componentId); - if (componentValue) { + if (componentValue) value = componentValue; - } } } } - else { + else + { value = elementValue; } } @@ -208,9 +221,8 @@ searchCacheForValueEx(MmsValueCache self, const char* itemId, char* parentId, in } } - if (outSpec) { + if (outSpec) *outSpec = MmsVariableSpecification_getNamedVariableRecursive(typeSpec, childId); - } } } @@ -224,14 +236,15 @@ MmsValueCache_lookupValueEx(MmsValueCache self, const char* itemId, int idx, con MmsValueCacheEntry* cacheEntry = (MmsValueCacheEntry*) Map_getEntry(self->map, (void*) itemId); - if (cacheEntry) { - if (outSpec) { + if (cacheEntry) + { + if (outSpec) *outSpec = cacheEntry->typeSpec; - } return cacheEntry->value; } - else { + else + { char itemIdCopy[65]; char componentIdCopyBuf[65]; @@ -239,15 +252,13 @@ MmsValueCache_lookupValueEx(MmsValueCache self, const char* itemId, int idx, con char* componentIdCopy = NULL; - if (componentId) { + if (componentId) componentIdCopy = StringUtils_copyStringMax(componentIdCopyBuf, 65, componentId); - } char* parentItemId = getParentSubString(itemIdCopy); - if (parentItemId != NULL) { + if (parentItemId) value = searchCacheForValueEx(self, itemId, parentItemId, idx, componentIdCopy, outSpec); - } } return value; @@ -256,15 +267,19 @@ MmsValueCache_lookupValueEx(MmsValueCache self, const char* itemId, int idx, con static void cacheEntryDelete(MmsValueCacheEntry* entry) { - if (entry != NULL) { - MmsValue_delete(entry->value); - GLOBAL_FREEMEM(entry); - } + if (entry) + { + MmsValue_delete(entry->value); + GLOBAL_FREEMEM(entry); + } } void MmsValueCache_destroy(MmsValueCache self) { - Map_deleteDeep(self->map, true, (void (*) (void*)) cacheEntryDelete); - GLOBAL_FREEMEM(self); + if (self) + { + Map_deleteDeep(self->map, true, (void (*) (void*)) cacheEntryDelete); + GLOBAL_FREEMEM(self); + } } diff --git a/src/mms/iso_mms/server/mms_write_service.c b/src/mms/iso_mms/server/mms_write_service.c index f46ddef6..471f4497 100644 --- a/src/mms/iso_mms/server/mms_write_service.c +++ b/src/mms/iso_mms/server/mms_write_service.c @@ -46,7 +46,8 @@ mmsServer_createMmsWriteResponse(MmsServerConnection connection, uint32_t accessResultsLength = 0; int i; - for (i = 0; i < numberOfItems; i++) { + for (i = 0; i < numberOfItems; i++) + { if (accessResults[i] < 0) accessResultsLength += 2; else @@ -57,7 +58,8 @@ mmsServer_createMmsWriteResponse(MmsServerConnection connection, + 1 + BerEncoder_determineLengthSize(accessResultsLength) + accessResultsLength; - if ((int)(writeResponseLength + 1) > response->maxSize) { + if ((int)(writeResponseLength + 1) > response->maxSize) + { /* TODO add log message */ response->size = 0; @@ -74,12 +76,15 @@ mmsServer_createMmsWriteResponse(MmsServerConnection connection, bufPos = BerEncoder_encodeTL(0xa5, accessResultsLength, buffer, bufPos); - for (i = 0; i < numberOfItems; i++) { - if (accessResults[i] < 0) { + for (i = 0; i < numberOfItems; i++) + { + if (accessResults[i] < 0) + { buffer[bufPos++] = 0x81; buffer[bufPos++] = 0x00; } - else { + else + { buffer[bufPos++] = 0x80; buffer[bufPos++] = 0x01; buffer[bufPos++] = (uint8_t) accessResults[i]; @@ -349,7 +354,8 @@ createWriteNamedVariableListResponse( int numberOfWriteItems = LinkedList_size(variables); - if (numberOfWriteItems > CONFIG_MMS_WRITE_SERVICE_MAX_NUMBER_OF_WRITE_ITEMS) { + if (numberOfWriteItems > CONFIG_MMS_WRITE_SERVICE_MAX_NUMBER_OF_WRITE_ITEMS) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_OTHER, response); return; } @@ -362,7 +368,8 @@ createWriteNamedVariableListResponse( int i = 0; - for (element = LinkedList_getNext(variables); element != NULL; element = LinkedList_getNext(element)) { + for (element = LinkedList_getNext(variables); element != NULL; element = LinkedList_getNext(element)) + { MmsNamedVariableListEntry variableListEntry = (MmsNamedVariableListEntry) LinkedList_getData(element); MmsDomain* variableDomain = MmsNamedVariableListEntry_getDomain(variableListEntry); @@ -374,14 +381,17 @@ createWriteNamedVariableListResponse( MmsValue* newValue = mmsMsg_parseDataElement(dataElement); - if (newValue == NULL) { + if (newValue == NULL) + { accessResults[i] = DATA_ACCESS_ERROR_OBJECT_ATTRIBUTE_INCONSISTENT; } - else if (MmsValue_equalTypes(oldValue, newValue) == false) { + else if (MmsValue_equalTypes(oldValue, newValue) == false) + { MmsValue_delete(newValue); accessResults[i] = DATA_ACCESS_ERROR_TYPE_INCONSISTENT; } - else { + else + { MmsDataAccessError valueIndication = mmsServer_setValue(connection->server, variableDomain, variableName, newValue, connection); @@ -420,38 +430,42 @@ handleWriteNamedVariableListRequest( MmsDomain* domain = MmsDevice_getDomain(MmsServer_getDevice(connection->server), domainIdStr); - if (domain == NULL) { + if (domain == NULL) + { if (DEBUG_MMS_SERVER) printf("MMS write: domain %s not found!\n", domainIdStr); mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); return; } - else { + else + { MmsNamedVariableList namedList = MmsDomain_getNamedVariableList(domain, nameIdStr); - if (namedList) { - + if (namedList) + { MmsError accessError = mmsServer_callVariableListChangedHandler(MMS_VARLIST_WRITE, MMS_DOMAIN_SPECIFIC, domain, namedList->name, connection); - if (accessError == MMS_ERROR_NONE) { + if (accessError == MMS_ERROR_NONE) + { createWriteNamedVariableListResponse(connection, writeRequest, invokeId, namedList, response); } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS write: named variable list %s access error: %i\n", nameIdStr, accessError); mmsMsg_createServiceErrorPdu(invokeId, response, accessError); } - } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS write: named variable list %s not found!\n", nameIdStr); mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); } } - } - else if (writeRequest->variableAccessSpecification.choice.variableListName.present == ObjectName_PR_vmdspecific) { + else if (writeRequest->variableAccessSpecification.choice.variableListName.present == ObjectName_PR_vmdspecific) + { char listName[65]; mmsMsg_copyAsn1IdentifierToStringBuffer(writeRequest->variableAccessSpecification.choice.variableListName.choice.vmdspecific, @@ -459,27 +473,31 @@ handleWriteNamedVariableListRequest( MmsNamedVariableList namedList = mmsServer_getNamedVariableListWithName(connection->server->device->namedVariableLists, listName); - if (namedList) { - + if (namedList) + { MmsError accessError = mmsServer_callVariableListChangedHandler(MMS_VARLIST_WRITE, MMS_VMD_SPECIFIC, NULL, namedList->name, connection); - if (accessError == MMS_ERROR_NONE) { + if (accessError == MMS_ERROR_NONE) + { createWriteNamedVariableListResponse(connection, writeRequest, invokeId, namedList, response); } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS write: vmd specific named variable list %s access error: %i\n", namedList->name, accessError); mmsMsg_createServiceErrorPdu(invokeId, response, accessError); } } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS write: vmd specific named variable list %s not found!\n", listName); mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); } } #if (MMS_DYNAMIC_DATA_SETS == 1) - else if (writeRequest->variableAccessSpecification.choice.variableListName.present == ObjectName_PR_aaspecific) { + else if (writeRequest->variableAccessSpecification.choice.variableListName.present == ObjectName_PR_aaspecific) + { char listName[65]; mmsMsg_copyAsn1IdentifierToStringBuffer(writeRequest->variableAccessSpecification.choice.variableListName.choice.aaspecific, @@ -487,21 +505,23 @@ handleWriteNamedVariableListRequest( MmsNamedVariableList namedList = MmsServerConnection_getNamedVariableList(connection, listName); - if (namedList) { - + if (namedList) + { MmsError accessError = mmsServer_callVariableListChangedHandler(MMS_VARLIST_WRITE, MMS_ASSOCIATION_SPECIFIC, NULL, namedList->name, connection); - if (accessError == MMS_ERROR_NONE) { + if (accessError == MMS_ERROR_NONE) + { createWriteNamedVariableListResponse(connection, writeRequest, invokeId, namedList, response); } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS write: association specific named variable list %s access error: %i\n", namedList->name, accessError); mmsMsg_createServiceErrorPdu(invokeId, response, accessError); } - } - else { + else + { if (DEBUG_MMS_SERVER) printf("MMS write: association specific named variable list %s not found!\n", listName); mmsMsg_createServiceErrorPdu(invokeId, response, MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT); } @@ -583,7 +603,8 @@ mmsServer_handleWriteRequest( rval = ber_decode(NULL, &asn_DEF_MmsPdu, (void**) &mmsPdu, buffer, maxBufPos); - if (rval.code != RC_OK) { + if (rval.code != RC_OK) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_INVALID_PDU, response); goto exit_function; } @@ -610,17 +631,20 @@ mmsServer_handleWriteRequest( { int numberOfWriteItems = writeRequest->variableAccessSpecification.choice.listOfVariable.list.count; - if (numberOfWriteItems < 1) { + if (numberOfWriteItems < 1) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); goto exit_function; } - if (numberOfWriteItems > CONFIG_MMS_WRITE_SERVICE_MAX_NUMBER_OF_WRITE_ITEMS) { + if (numberOfWriteItems > CONFIG_MMS_WRITE_SERVICE_MAX_NUMBER_OF_WRITE_ITEMS) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_OTHER, response); goto exit_function; } - if (writeRequest->listOfData.list.count != numberOfWriteItems) { + if (writeRequest->listOfData.list.count != numberOfWriteItems) + { mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); goto exit_function; } @@ -636,7 +660,8 @@ mmsServer_handleWriteRequest( ListOfVariableSeq_t* varSpec = writeRequest->variableAccessSpecification.choice.listOfVariable.list.array[i]; - if (varSpec->variableSpecification.present != VariableSpecification_PR_name) { + if (varSpec->variableSpecification.present != VariableSpecification_PR_name) + { accessResults[i] = DATA_ACCESS_ERROR_OBJECT_ACCESS_UNSUPPORTED; continue; } @@ -659,7 +684,8 @@ mmsServer_handleWriteRequest( domain = MmsDevice_getDomain(device, domainIdStr); - if (domain == NULL) { + if (domain == NULL) + { accessResults[i] = DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT; continue; } @@ -672,7 +698,8 @@ mmsServer_handleWriteRequest( } #if (CONFIG_MMS_SUPPORT_VMD_SCOPE_NAMED_VARIABLES == 1) - else if (varSpec->variableSpecification.choice.name.present == ObjectName_PR_vmdspecific) { + else if (varSpec->variableSpecification.choice.name.present == ObjectName_PR_vmdspecific) + { Identifier_t nameId = varSpec->variableSpecification.choice.name.choice.vmdspecific; mmsMsg_copyAsn1IdentifierToStringBuffer(nameId, nameIdStr, 65); @@ -681,12 +708,14 @@ mmsServer_handleWriteRequest( } #endif /* (CONFIG_MMS_SUPPORT_VMD_SCOPE_NAMED_VARIABLES == 1) */ - else { + else + { accessResults[i] = DATA_ACCESS_ERROR_OBJECT_ACCESS_UNSUPPORTED; continue; } - if (variable == NULL) { + if (variable == NULL) + { accessResults[i] = DATA_ACCESS_ERROR_OBJECT_NONE_EXISTENT; continue; } @@ -715,7 +744,8 @@ mmsServer_handleWriteRequest( MmsValue* value = mmsMsg_parseDataElement(dataElement); - if (value == NULL) { + if (value == NULL) + { accessResults[i] = DATA_ACCESS_ERROR_OBJECT_ATTRIBUTE_INCONSISTENT; continue; } @@ -729,7 +759,8 @@ mmsServer_handleWriteRequest( { MmsValue* cachedArray = MmsServer_getValueFromCache(connection->server, domain, nameIdStr); - if (cachedArray == NULL) { + if (cachedArray == NULL) + { accessResults[i] = DATA_ACCESS_ERROR_OBJECT_ATTRIBUTE_INCONSISTENT; goto end_of_main_loop; } @@ -788,12 +819,14 @@ mmsServer_handleWriteRequest( MmsValue* newElement = MmsValue_getElement(value, elementNo); MmsValue* elementValue = MmsValue_getElement(cachedArray, index++); - if ((elementValue == NULL) || (newElement == NULL) ) { + if ((elementValue == NULL) || (newElement == NULL) ) + { accessResults[i] = DATA_ACCESS_ERROR_TYPE_INCONSISTENT; goto end_of_main_loop; } - if (MmsValue_update(elementValue, newElement) == false) { + if (MmsValue_update(elementValue, newElement) == false) + { accessResults[i] = DATA_ACCESS_ERROR_TYPE_INCONSISTENT; goto end_of_main_loop; } @@ -840,7 +873,9 @@ mmsServer_handleWriteRequest( if (sendResponse) mmsServer_createMmsWriteResponse(connection, invokeId, response, numberOfWriteItems, accessResults); } - else { /* unknown request type */ + else + { + /* unknown request type */ mmsMsg_createMmsRejectPdu(&invokeId, MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT, response); goto exit_function; }