[SECNET PATCH v2 11/19] Introduce transform_apply_return_badseq

Ian Jackson ijackson at chiark.greenend.org.uk
Sat May 18 02:38:44 BST 2019


This abstraction will allow us to distinguish two problems in a
moment.

No functional change.

Signed-off-by: Ian Jackson <ijackson at chiark.greenend.org.uk>
---
 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.11.0




More information about the sgo-software-discuss mailing list