diff --git a/gck-rpc-dispatch.c b/gck-rpc-dispatch.c index 624d9d06a5d7157a7759d40226560c7335951704..9bf2fa1c5785514cd0d45bdf79bbe1231bec18ac 100644 --- a/gck-rpc-dispatch.c +++ b/gck-rpc-dispatch.c @@ -861,6 +861,7 @@ static CK_RV rpc_C_Initialize(CallState * cs) /* Check to make sure the header matches */ if (n_handshake != GCK_RPC_HANDSHAKE_LEN || + handshake == NULL_PTR || memcmp(handshake, GCK_RPC_HANDSHAKE, n_handshake) != 0) { gck_rpc_warn ("invalid handshake received from connecting module"); @@ -1978,6 +1979,9 @@ static CK_RV rpc_C_GenerateRandom(CallState * cs) BEGIN_CALL(C_GenerateRandom); IN_ULONG(session); IN_BYTE_BUFFER(random_data, random_len); + if (random_len == NULL_PTR) { + _ret = PARSE_ERROR; goto _cleanup; + } PROCESS_CALL((session, random_data, *random_len)); OUT_BYTE_ARRAY(random_data, random_len); END_CALL;