You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/06/17 19:27:59 UTC
[plc4x] 02/02: - Added checks for the return codes of parsed
sub-types - Added NULL-checks after the malloc of complex types
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/c-code-generation-tagged-unions
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit c3d641aeb0e811359509ba56e645cb588006e2b6
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Wed Jun 17 21:27:17 2020 +0200
- Added checks for the return codes of parsed sub-types
- Added NULL-checks after the malloc of complex types
---
.../resources/templates/c/pojo-template-c.ftlh | 28 ++++++++++++++++++----
.../resources/templates/c/pojo-template-h.ftlh | 6 +++--
.../modbus/src/modbus_constants.c | 3 +++
.../generated-sources/modbus/src/modbus_pdu.c | 23 ++++++++++++++----
.../src/modbus_pdu_read_file_record_request_item.c | 3 +++
.../modbus_pdu_read_file_record_response_item.c | 3 +++
.../modbus_pdu_write_file_record_request_item.c | 3 +++
.../modbus_pdu_write_file_record_response_item.c | 3 +++
.../modbus/src/modbus_serial_adu.c | 8 ++++++-
.../generated-sources/modbus/src/modbus_tcp_adu.c | 8 ++++++-
.../s7/includes/szl_data_tree_item.h | 2 +-
.../plc4c/generated-sources/s7/src/cotp_packet.c | 13 ++++++++--
.../generated-sources/s7/src/cotp_parameter.c | 3 +++
.../plc4c/generated-sources/s7/src/s7_address.c | 3 +++
.../plc4c/generated-sources/s7/src/s7_message.c | 13 ++++++++--
.../plc4c/generated-sources/s7/src/s7_parameter.c | 18 +++++++++++---
.../s7/src/s7_parameter_user_data_item.c | 3 +++
.../plc4c/generated-sources/s7/src/s7_payload.c | 23 ++++++++++++++----
.../s7/src/s7_payload_user_data_item.c | 13 ++++++++--
.../s7/src/s7_var_payload_data_item.c | 3 +++
.../s7/src/s7_var_payload_status_item.c | 3 +++
.../s7/src/s7_var_request_parameter_item.c | 8 ++++++-
.../generated-sources/s7/src/szl_data_tree_item.c | 3 +++
sandbox/plc4c/generated-sources/s7/src/szl_id.c | 3 +++
.../plc4c/generated-sources/s7/src/tpkt_packet.c | 8 ++++++-
25 files changed, 178 insertions(+), 29 deletions(-)
diff --git a/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh b/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
index 7e20914..9f40667 100644
--- a/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
@@ -95,6 +95,9 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_${helper.getCTypeName(type.name)}));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
<#if type.getPropertyFields()?has_content>
</#if>
@@ -127,7 +130,10 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
<#else>
<#-- Inizialize a local variable with the complex type (Intentionally keeping the java-style names so they can be used in expressions) -->
${helper.getLanguageTypeNameForField(field)}* _value = NULL;
- plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &_value);
+ plc4c_return_code _res = plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(${arrayField.name}, _value);
</#if>
}
@@ -144,7 +150,10 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
<#else>
<#-- Inizialize a local variable with the complex type (Intentionally keeping the java-style names so they can be used in expressions) -->
${helper.getLanguageTypeNameForField(field)}* _value = NULL;
- plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &_value);
+ plc4c_return_code _res = plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(${arrayField.name}, _value);
</#if>
<#-- After parsing, update the current position, but only if it's needed -->
@@ -163,7 +172,10 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
<#else>
<#-- Inizialize a local variable with the complex type (Intentionally keeping the java-style names so they can be used in expressions) -->
${helper.getLanguageTypeNameForField(field)}* _value = NULL;
- plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &_value);
+ plc4c_return_code _res = plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(${arrayField.name}, _value);
</#if>
<#-- After parsing, update the current position, but only if it's needed -->
@@ -251,7 +263,10 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
<#if helper.isSimpleTypeReference(optionalField.type)>
*${optionalField.name} = ${helper.getReadBufferReadMethodCall(optionalField.type)};
<#else>
- plc4c_${helper.getCTypeName(optionalField.type.name)}_parse(buf<#if optionalField.params?has_content>, <#list optionalField.params as parserTerm>${helper.toParseExpression(baseType, optionalField, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, &${optionalField.name});
+ plc4c_return_code _res = plc4c_${helper.getCTypeName(optionalField.type.name)}_parse(buf<#if optionalField.params?has_content>, <#list optionalField.params as parserTerm>${helper.toParseExpression(baseType, optionalField, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, &${optionalField.name});
+ if(_res != OK) {
+ return _res;
+ }
</#if>
(*_message)-><@fieldName baseType=baseType field=optionalField/> = ${optionalField.name};
}
@@ -291,7 +306,10 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
<#else>
<#-- Inizialize a local variable with the complex type (Intentionally keeping the java-style names so they can be used in expressions) -->
${helper.getLanguageTypeNameForField(field)}* ${simpleField.name};
- plc4c_${helper.getCTypeName(simpleField.type.name)}_parse(buf<#if simpleField.params?has_content>, <#list simpleField.params as parserTerm>${helper.toParseExpression(baseType, simpleField, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &${simpleField.name});
+ plc4c_return_code _res = plc4c_${helper.getCTypeName(simpleField.type.name)}_parse(buf<#if simpleField.params?has_content>, <#list simpleField.params as parserTerm>${helper.toParseExpression(baseType, simpleField, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &${simpleField.name});
+ if(_res != OK) {
+ return _res;
+ }
</#if>
(*_message)-><@fieldName baseType=baseType field=simpleField/> = ${simpleField.name};
<#break>
diff --git a/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh b/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh
index dad45b8..e390c73 100644
--- a/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh
@@ -120,6 +120,8 @@ struct plc4c_${helper.getCTypeName(type.name)} {
<#list case.propertyFields as caseField>
<#if (helper.isSimpleTypeReference(caseField.type) || helper.isEnumField(caseField)) && !helper.isOptionalField(caseField) && !helper.isArrayField(caseField) && !helper.isManualArrayField(caseField)>
${helper.getLanguageTypeNameForField(caseField)} ${helper.camelCaseToSnakeCase(case.name)}_${helper.camelCaseToSnakeCase(caseField.name)}${helper.getTypeSizeForField(caseField)}<#if field.loopType??>${helper.getLoopExpressionSuffix(caseField)}</#if>;
+ <#elseif helper.isArrayField(caseField) || helper.isManualArrayField(caseField)>
+ plc4c_list* ${helper.camelCaseToSnakeCase(case.name)}_${helper.camelCaseToSnakeCase(caseField.name)};
<#else>
${helper.getLanguageTypeNameForField(caseField)}* ${helper.camelCaseToSnakeCase(case.name)}_${helper.camelCaseToSnakeCase(caseField.name)};
</#if>
@@ -127,10 +129,10 @@ struct plc4c_${helper.getCTypeName(type.name)} {
};
</#list>
};
- <#elseif helper.isEnumField(field)>
- ${helper.getLanguageTypeNameForField(field)} ${helper.camelCaseToSnakeCase(field.name)};
<#elseif (helper.isSimpleTypeReference(field.type) || helper.isEnumField(field)) && !helper.isOptionalField(field) && !helper.isArrayField(field) && !helper.isManualArrayField(field)>
${helper.getLanguageTypeNameForField(field)} ${helper.camelCaseToSnakeCase(field.name)}${helper.getTypeSizeForField(field)}<#if field.loopType??>${helper.getLoopExpressionSuffix(field)}</#if>;
+ <#elseif helper.isArrayField(field) || helper.isManualArrayField(field)>
+ plc4c_list* ${helper.camelCaseToSnakeCase(field.name)};
<#else>
${helper.getLanguageTypeNameForField(field)}* ${helper.camelCaseToSnakeCase(field.name)};
</#if>
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_constants.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_constants.c
index 733739a..15b15f0 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_constants.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_constants.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_modbus_read_write_modbus_constants_parse(plc4c_spi_read_
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_modbus_read_write_modbus_constants));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Const Field (modbusTcpDefaultPort)
uint16_t modbusTcpDefaultPort = plc4c_spi_read_unsigned_int(buf, 16);
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
index 662755e..f275bea 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
@@ -113,6 +113,9 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_modbus_read_write_modbus_pdu));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Discriminator Field (error) (Used as input to a switch field)
bool error = plc4c_spi_read_bit(buf);
@@ -534,7 +537,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
uint8_t itemsEndPos = plc4c_spi_read_get_pos(buf) + _itemsLength;
while(plc4c_spi_read_get_pos(buf) < itemsEndPos) {
plc4c_list* _value = NULL;
- plc4c_modbus_read_write_modbus_pdu_read_file_record_request_item_parse(buf, (void*) &_value);
+ plc4c_return_code _res = plc4c_modbus_read_write_modbus_pdu_read_file_record_request_item_parse(buf, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
@@ -557,7 +563,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
uint8_t itemsEndPos = plc4c_spi_read_get_pos(buf) + _itemsLength;
while(plc4c_spi_read_get_pos(buf) < itemsEndPos) {
plc4c_list* _value = NULL;
- plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item_parse(buf, (void*) &_value);
+ plc4c_return_code _res = plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item_parse(buf, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
@@ -580,7 +589,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
uint8_t itemsEndPos = plc4c_spi_read_get_pos(buf) + _itemsLength;
while(plc4c_spi_read_get_pos(buf) < itemsEndPos) {
plc4c_list* _value = NULL;
- plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item_parse(buf, (void*) &_value);
+ plc4c_return_code _res = plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item_parse(buf, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
@@ -603,7 +615,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
uint8_t itemsEndPos = plc4c_spi_read_get_pos(buf) + _itemsLength;
while(plc4c_spi_read_get_pos(buf) < itemsEndPos) {
plc4c_list* _value = NULL;
- plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item_parse(buf, (void*) &_value);
+ plc4c_return_code _res = plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item_parse(buf, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request_item.c
index c679f76..31e6b67 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_request_item.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_request_it
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_modbus_read_write_modbus_pdu_read_file_record_request_item));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Simple Field (referenceType)
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c
index 11737e4..686c4d3 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_response_i
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Implicit Field (dataLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c
index aded3ab..33b8e9a 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_request_i
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Simple Field (referenceType)
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c
index d3f9ace..21f3113 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_response_
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Simple Field (referenceType)
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c
index 7bffd64..c284a6d 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_modbus_read_write_modbus_serial_adu_parse(plc4c_spi_read
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_modbus_read_write_modbus_serial_adu));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Simple Field (transactionId)
@@ -54,7 +57,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_serial_adu_parse(plc4c_spi_read
// Simple Field (pdu)
plc4c_modbus_read_write_modbus_pdu* pdu;
- plc4c_modbus_read_write_modbus_pdu_parse(buf, response, (void*) &pdu);
+ plc4c_return_code _res = plc4c_modbus_read_write_modbus_pdu_parse(buf, response, (void*) &pdu);
+ if(_res != OK) {
+ return _res;
+ }
(*_message)->pdu = pdu;
return OK;
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c
index 2170a37..96d17ab 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_modbus_read_write_modbus_tcp_adu_parse(plc4c_spi_read_bu
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_modbus_read_write_modbus_tcp_adu));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Simple Field (transactionIdentifier)
@@ -52,7 +55,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_tcp_adu_parse(plc4c_spi_read_bu
// Simple Field (pdu)
plc4c_modbus_read_write_modbus_pdu* pdu;
- plc4c_modbus_read_write_modbus_pdu_parse(buf, response, (void*) &pdu);
+ plc4c_return_code _res = plc4c_modbus_read_write_modbus_pdu_parse(buf, response, (void*) &pdu);
+ if(_res != OK) {
+ return _res;
+ }
(*_message)->pdu = pdu;
return OK;
diff --git a/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h b/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h
index 920af6f..2913626 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h
@@ -29,7 +29,7 @@ extern "C" {
struct plc4c_s7_read_write_szl_data_tree_item {
/* Properties */
uint16_t item_index;
- int8_t* mlfb;
+ plc4c_list* mlfb;
uint16_t module_type_id;
uint16_t ausbg;
uint16_t ausbe;
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c b/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c
index 04dad6a..075ff24 100644
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c
+++ b/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c
@@ -53,6 +53,9 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* b
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_cotp_packet));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Implicit Field (headerLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -156,7 +159,10 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* b
uint8_t parametersEndPos = plc4c_spi_read_get_pos(buf) + _parametersLength;
while(plc4c_spi_read_get_pos(buf) < parametersEndPos) {
plc4c_list* _value = NULL;
- plc4c_s7_read_write_cotp_parameter_parse(buf, (((headerLength) + (1))) - (curPos), (void*) &_value);
+ plc4c_return_code _res = plc4c_s7_read_write_cotp_parameter_parse(buf, (((headerLength) + (1))) - (curPos), (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(parameters, _value);
curPos = plc4c_spi_read_get_pos(buf) - startPos;
}
@@ -171,7 +177,10 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* b
if(payload == NULL) {
return NO_MEMORY;
}
- plc4c_s7_read_write_s7_message_parse(buf, &payload);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_message_parse(buf, &payload);
+ if(_res != OK) {
+ return _res;
+ }
(*_message)->payload = payload;
}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c
index 5a2c63d..0d82f29 100644
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c
+++ b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c
@@ -51,6 +51,9 @@ plc4c_return_code plc4c_s7_read_write_cotp_parameter_parse(plc4c_spi_read_buffer
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_cotp_parameter));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Discriminator Field (parameterType) (Used as input to a switch field)
uint8_t parameterType = plc4c_spi_read_unsigned_short(buf, 8);
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_address.c b/sandbox/plc4c/generated-sources/s7/src/s7_address.c
index 27b7895..e5c44a3 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_address.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_address.c
@@ -43,6 +43,9 @@ plc4c_return_code plc4c_s7_read_write_s7_address_parse(plc4c_spi_read_buffer* bu
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_s7_address));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Discriminator Field (addressType) (Used as input to a switch field)
uint8_t addressType = plc4c_spi_read_unsigned_short(buf, 8);
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_message.c b/sandbox/plc4c/generated-sources/s7/src/s7_message.c
index d172a53..328b4be 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_message.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_message.c
@@ -49,6 +49,9 @@ plc4c_return_code plc4c_s7_read_write_s7_message_parse(plc4c_spi_read_buffer* bu
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_s7_message));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Const Field (protocolId)
@@ -114,7 +117,10 @@ plc4c_return_code plc4c_s7_read_write_s7_message_parse(plc4c_spi_read_buffer* bu
if(parameter == NULL) {
return NO_MEMORY;
}
- plc4c_s7_read_write_s7_parameter_parse(buf, messageType, ¶meter);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_parameter_parse(buf, messageType, ¶meter);
+ if(_res != OK) {
+ return _res;
+ }
(*_message)->parameter = parameter;
}
@@ -125,7 +131,10 @@ plc4c_return_code plc4c_s7_read_write_s7_message_parse(plc4c_spi_read_buffer* bu
if(payload == NULL) {
return NO_MEMORY;
}
- plc4c_s7_read_write_s7_payload_parse(buf, messageType, parameter, &payload);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_payload_parse(buf, messageType, parameter, &payload);
+ if(_res != OK) {
+ return _res;
+ }
(*_message)->payload = payload;
}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c
index 182f2eb..6357736 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c
@@ -53,6 +53,9 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_s7_parameter));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Discriminator Field (parameterType) (Used as input to a switch field)
uint8_t parameterType = plc4c_spi_read_unsigned_short(buf, 8);
@@ -100,7 +103,10 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
plc4c_list* _value = NULL;
- plc4c_s7_read_write_s7_var_request_parameter_item_parse(buf, (void*) &_value);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_var_request_parameter_item_parse(buf, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
@@ -129,7 +135,10 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
plc4c_list* _value = NULL;
- plc4c_s7_read_write_s7_var_request_parameter_item_parse(buf, (void*) &_value);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_var_request_parameter_item_parse(buf, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
@@ -158,7 +167,10 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
plc4c_list* _value = NULL;
- plc4c_s7_read_write_s7_parameter_user_data_item_parse(buf, (void*) &_value);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_parameter_user_data_item_parse(buf, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c
index 5512c0c..3eab327 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c
@@ -43,6 +43,9 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_item_parse(plc4c_sp
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_s7_parameter_user_data_item));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Discriminator Field (itemType) (Used as input to a switch field)
uint8_t itemType = plc4c_spi_read_unsigned_short(buf, 8);
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload.c
index 815f1d5..55b20cb 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_payload.c
@@ -49,6 +49,9 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* bu
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_s7_payload));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
if((plc4c_s7_read_write_s7_parameter_get_discriminator(parameter->_type).parameterType == 0x04) && (messageType == 0x03)) { /* S7PayloadReadVarResponse */
@@ -64,7 +67,10 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* bu
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
plc4c_list* _value = NULL;
- plc4c_s7_read_write_s7_var_payload_data_item_parse(buf, lastItem, (void*) &_value);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_var_payload_data_item_parse(buf, lastItem, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
@@ -83,7 +89,10 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* bu
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
plc4c_list* _value = NULL;
- plc4c_s7_read_write_s7_var_payload_data_item_parse(buf, lastItem, (void*) &_value);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_var_payload_data_item_parse(buf, lastItem, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
@@ -102,7 +111,10 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* bu
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
plc4c_list* _value = NULL;
- plc4c_s7_read_write_s7_var_payload_status_item_parse(buf, (void*) &_value);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_var_payload_status_item_parse(buf, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
@@ -121,7 +133,10 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* bu
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
plc4c_list* _value = NULL;
- plc4c_s7_read_write_s7_payload_user_data_item_parse(buf, ((plc4c_s7_read_write_s7_parameter_user_data_item*) (plc4c_utils_list_get(((plc4c_s7_read_write_s7_parameter*) (parameter))->s7_parameter_user_data_items, 0)))->s7_parameter_user_data_item_cpu_functions_cpu_function_type, (void*) &_value);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_payload_user_data_item_parse(buf, ((plc4c_s7_read_write_s7_parameter_user_data_item*) (plc4c_utils_list_get(((plc4c_s7_read_write_s7_parameter*) (parameter))->s7_parameter_user_data_items, 0)))->s7_parameter_user_data_item_cpu_functions_cpu_function_type, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
index 4da4a54..7a46d20 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
@@ -45,6 +45,9 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_s7_payload_user_data_item));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Enum field (returnCode)
@@ -60,7 +63,10 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
// Simple Field (szlId)
plc4c_s7_read_write_szl_id* szlId;
- plc4c_s7_read_write_szl_id_parse(buf, (void*) &szlId);
+ plc4c_return_code _res = plc4c_s7_read_write_szl_id_parse(buf, (void*) &szlId);
+ if(_res != OK) {
+ return _res;
+ }
(*_message)->szl_id = szlId;
// Simple Field (szlIndex)
@@ -95,7 +101,10 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
plc4c_list* _value = NULL;
- plc4c_s7_read_write_szl_data_tree_item_parse(buf, (void*) &_value);
+ plc4c_return_code _res = plc4c_s7_read_write_szl_data_tree_item_parse(buf, (void*) &_value);
+ if(_res != OK) {
+ return _res;
+ }
plc4c_utils_list_insert_head_value(items, _value);
}
}
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c
index e6c8f3f..621ab79 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_s7_read_write_s7_var_payload_data_item_parse(plc4c_spi_r
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_s7_var_payload_data_item));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Enum field (returnCode)
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_status_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_status_item.c
index e3bad0d..420006a 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_status_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_status_item.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_s7_read_write_s7_var_payload_status_item_parse(plc4c_spi
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_s7_var_payload_status_item));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Enum field (returnCode)
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
index 7855af4..6da1d2a 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
@@ -43,6 +43,9 @@ plc4c_return_code plc4c_s7_read_write_s7_var_request_parameter_item_parse(plc4c_
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_s7_var_request_parameter_item));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Discriminator Field (itemType) (Used as input to a switch field)
uint8_t itemType = plc4c_spi_read_unsigned_short(buf, 8);
@@ -56,7 +59,10 @@ plc4c_return_code plc4c_s7_read_write_s7_var_request_parameter_item_parse(plc4c_
// Simple Field (address)
plc4c_s7_read_write_s7_address* address;
- plc4c_s7_read_write_s7_address_parse(buf, (void*) &address);
+ plc4c_return_code _res = plc4c_s7_read_write_s7_address_parse(buf, (void*) &address);
+ if(_res != OK) {
+ return _res;
+ }
(*_message)->s7_var_request_parameter_item_address_address = address;
}
diff --git a/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c b/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c
index ef64b69..41b209f 100644
--- a/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_s7_read_write_szl_data_tree_item_parse(plc4c_spi_read_bu
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_szl_data_tree_item));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Simple Field (itemIndex)
diff --git a/sandbox/plc4c/generated-sources/s7/src/szl_id.c b/sandbox/plc4c/generated-sources/s7/src/szl_id.c
index 484ba7c..532015d 100644
--- a/sandbox/plc4c/generated-sources/s7/src/szl_id.c
+++ b/sandbox/plc4c/generated-sources/s7/src/szl_id.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_s7_read_write_szl_id_parse(plc4c_spi_read_buffer* buf, p
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_szl_id));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Enum field (typeClass)
diff --git a/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c b/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c
index 4a7ce24..324d1f7 100644
--- a/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c
+++ b/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c
@@ -30,6 +30,9 @@ plc4c_return_code plc4c_s7_read_write_tpkt_packet_parse(plc4c_spi_read_buffer* b
// Pointer to the parsed data structure.
(*_message) = malloc(sizeof(plc4c_s7_read_write_tpkt_packet));
+ if(*_message == NULL) {
+ return NO_MEMORY;
+ }
// Const Field (protocolId)
@@ -52,7 +55,10 @@ plc4c_return_code plc4c_s7_read_write_tpkt_packet_parse(plc4c_spi_read_buffer* b
// Simple Field (payload)
plc4c_s7_read_write_cotp_packet* payload;
- plc4c_s7_read_write_cotp_packet_parse(buf, (len) - (4), (void*) &payload);
+ plc4c_return_code _res = plc4c_s7_read_write_cotp_packet_parse(buf, (len) - (4), (void*) &payload);
+ if(_res != OK) {
+ return _res;
+ }
(*_message)->payload = payload;
return OK;