|
@@ -422,8 +422,10 @@ sendChunkSymmetric(UA_ChunkInfo* ci, UA_Byte **buf_pos, const UA_Byte **buf_end)
|
|
|
if(ci->chunksSoFar > connection->remoteConf.maxChunkCount &&
|
|
|
connection->remoteConf.maxChunkCount != 0)
|
|
|
ci->errorCode = UA_STATUSCODE_BADRESPONSETOOLARGE;
|
|
|
- if(ci->errorCode != UA_STATUSCODE_GOOD)
|
|
|
+ if(ci->errorCode != UA_STATUSCODE_GOOD) {
|
|
|
+ connection->releaseSendBuffer(channel->connection, &ci->messageBuffer);
|
|
|
return ci->errorCode;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
* from buf_end before encoding the payload. So we don't check here. */
|
|
@@ -802,11 +804,13 @@ checkAsymHeader(UA_SecureChannel *const channel,
|
|
|
static UA_StatusCode
|
|
|
checkSymHeader(UA_SecureChannel *const channel,
|
|
|
const UA_UInt32 tokenId) {
|
|
|
+ #ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
|
|
if(tokenId != channel->securityToken.tokenId) {
|
|
|
if(tokenId != channel->nextSecurityToken.tokenId)
|
|
|
return UA_STATUSCODE_BADSECURECHANNELTOKENUNKNOWN;
|
|
|
return UA_SecureChannel_revolveTokens(channel);
|
|
|
}
|
|
|
+ #endif
|
|
|
|
|
|
return UA_STATUSCODE_GOOD;
|
|
|
}
|
|
@@ -823,10 +827,12 @@ UA_SecureChannel_processChunk(UA_SecureChannel *channel, UA_ByteString *chunk,
|
|
|
if(retval != UA_STATUSCODE_GOOD)
|
|
|
return retval;
|
|
|
|
|
|
+ #if !defined(FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION)
|
|
|
|
|
|
if(messageHeader.secureChannelId != channel->securityToken.channelId &&
|
|
|
channel->state != UA_SECURECHANNELSTATE_FRESH)
|
|
|
return UA_STATUSCODE_BADSECURECHANNELIDINVALID;
|
|
|
+ #endif
|
|
|
|
|
|
UA_MessageType messageType = (UA_MessageType)
|
|
|
(messageHeader.messageHeader.messageTypeAndChunkType & UA_BITMASK_MESSAGETYPE);
|