From 31dd07884afd1f1d87d398bf344e1ba3a71e293b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Wed, 15 May 2019 00:39:42 +0100 Subject: [PATCH] Introduce transform_apply_return_badseq This abstraction will allow us to distinguish two problems in a moment. No functional change. Signed-off-by: Ian Jackson --- secnet.h | 5 +++++ site.c | 16 ++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/secnet.h b/secnet.h index 361c49e..21b94c0 100644 --- a/secnet.h +++ b/secnet.h @@ -551,6 +551,11 @@ typedef enum { /* message decrypted but sequence number was out of range */ } transform_apply_return; +static inline bool_t +transform_apply_return_badseq(transform_apply_return problem) { + return problem == transform_apply_seqrange; +} + typedef transform_apply_return transform_apply_fn(void *st, struct buffer_if *buf, const char **errmsg); diff --git a/site.c b/site.c index bc902ad..acbc2b6 100644 --- a/site.c +++ b/site.c @@ -1093,8 +1093,8 @@ decrypt_msg0(struct site *st, struct buffer_if *msg0, "peer has used new key","auxiliary key",LOG_SEC); return 0; } - if (problem==transform_apply_seqrange) - goto skew; + if (transform_apply_return_badseq(problem)) + goto badseq; buffer_copy(msg0, &st->scratch); problem = call_transform_reverse(st,st->auxiliary_key.transform, @@ -1118,8 +1118,8 @@ decrypt_msg0(struct site *st, struct buffer_if *msg0, } return 0; } - if (problem==transform_apply_seqrange) - goto skew; + if (transform_apply_return_badseq(problem)) + goto badseq; if (st->state==SITE_SENTMSG5) { buffer_copy(msg0, &st->scratch); @@ -1134,8 +1134,8 @@ decrypt_msg0(struct site *st, struct buffer_if *msg0, activate_new_key(st); return 0; /* do process the data in this packet */ } - if (problem==transform_apply_seqrange) - goto skew; + if (transform_apply_return_badseq(problem)) + goto badseq; } slog(st,LOG_SEC,"transform: %s (aux: %s, new: %s)", @@ -1145,8 +1145,8 @@ decrypt_msg0(struct site *st, struct buffer_if *msg0, assert(problem); return problem; - skew: - slog(st,LOG_DROP,"transform: %s (merely skew)",transform_err); + badseq: + slog(st,LOG_DROP,"transform: %s (bad seq.)",transform_err); assert(problem); return problem; } -- 2.30.2