From 47139985115e175ed9c3f7d648d6d9ec7c48b89b Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Tue, 12 Feb 2019 18:46:12 +0100 Subject: Deprecate libkeccak_{state,hmac}_{unmarshal_skip,marshal_size} and replace with the functions without the _skip or _size suffix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- libkeccak_state_unmarshal.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'libkeccak_state_unmarshal.c') diff --git a/libkeccak_state_unmarshal.c b/libkeccak_state_unmarshal.c index af1f7de..e46db54 100644 --- a/libkeccak_state_unmarshal.c +++ b/libkeccak_state_unmarshal.c @@ -5,7 +5,8 @@ /** * Unmarshal a `struct libkeccak_state` from a buffer * - * @param state The slot for the unmarshalled state, must not be initialised (memory leak otherwise) + * @param state The slot for the unmarshalled state, must not be + * initialised (memory leak otherwise), can be `NULL` * @param data The input buffer * @return The number of bytes read from `data`, 0 on error */ @@ -14,6 +15,10 @@ libkeccak_state_unmarshal(struct libkeccak_state *restrict state, const void *re { #define get(type, var) state->var = *((const type *)data), data += sizeof(type) / sizeof(char) const unsigned char *restrict data = data_; + if (!state) { + data += (7 * sizeof(long int) + 26 * sizeof(int64_t)) / sizeof(char); + return sizeof(struct libkeccak_state) - sizeof(char *) + *(const size_t *)data * sizeof(char); + } get(long int, r); get(long int, c); get(long int, n); -- cgit v1.2.3-70-g09d2