提交 ff495289 编写于 作者: D David Woodhouse 提交者: Matt Caswell

Fix DTLS_VERSION_xx() comparison macros for DTLS1_BAD_VER

DTLS version numbers are strange and backwards, except DTLS1_BAD_VER so
we have to make a special case for it.

This does leave us with a set of macros which will evaluate their arguments
more than once, but it's not a public-facing API and it's not like this is
the kind of thing where people will be using DTLS_VERSION_LE(x++, y) anyway.
Reviewed-by: NRich Salz <rsalz@openssl.org>
Reviewed-by: NMatt Caswell <matt@openssl.org>
上级 e6027420
...@@ -154,10 +154,13 @@ ...@@ -154,10 +154,13 @@
(c)[1]=(unsigned char)(((l)>> 8)&0xff), \ (c)[1]=(unsigned char)(((l)>> 8)&0xff), \
(c)[2]=(unsigned char)(((l) )&0xff)),(c)+=3) (c)[2]=(unsigned char)(((l) )&0xff)),(c)+=3)
#define DTLS_VERSION_GT(v1, v2) ((v1) < (v2)) /* DTLS version numbers are strange because they're inverted. Except
#define DTLS_VERSION_GE(v1, v2) ((v1) <= (v2)) * for DTLS1_BAD_VER, which should be considered "lower" than the rest. */
#define DTLS_VERSION_LT(v1, v2) ((v1) > (v2)) #define dtls_ver_ordinal(v1) (((v1) == DTLS1_BAD_VER) ? 0xff00 : (v1))
#define DTLS_VERSION_LE(v1, v2) ((v1) >= (v2)) #define DTLS_VERSION_GT(v1, v2) (dtls_ver_ordinal(v1) < dtls_ver_ordinal(v2))
#define DTLS_VERSION_GE(v1, v2) (dtls_ver_ordinal(v1) <= dtls_ver_ordinal(v2))
#define DTLS_VERSION_LT(v1, v2) (dtls_ver_ordinal(v1) > dtls_ver_ordinal(v2))
#define DTLS_VERSION_LE(v1, v2) (dtls_ver_ordinal(v1) >= dtls_ver_ordinal(v2))
/* LOCAL STUFF */ /* LOCAL STUFF */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册