|
@@ -87,12 +87,14 @@ satisfySignature(UA_Server *server, const UA_Variant *var, const UA_Argument *ar
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- /* do the array dimensions match? */
|
|
|
- if(arg->arrayDimensionsSize != varDimsSize)
|
|
|
- return UA_STATUSCODE_BADINVALIDARGUMENT;
|
|
|
- for(size_t i = 0; i < varDimsSize; i++) {
|
|
|
- if((UA_Int32)arg->arrayDimensions[i] != varDims[i])
|
|
|
+ /* Do the variants dimensions match? Check only if defined in the argument. */
|
|
|
+ if(arg->arrayDimensionsSize > 0) {
|
|
|
+ if(arg->arrayDimensionsSize != varDimsSize)
|
|
|
return UA_STATUSCODE_BADINVALIDARGUMENT;
|
|
|
+ for(size_t i = 0; i < varDimsSize; i++) {
|
|
|
+ if((UA_Int32)arg->arrayDimensions[i] != varDims[i])
|
|
|
+ return UA_STATUSCODE_BADINVALIDARGUMENT;
|
|
|
+ }
|
|
|
}
|
|
|
return UA_STATUSCODE_GOOD;
|
|
|
}
|