summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2019-10-30 14:20:23 +0000
committerDmitry Eremin-Solenikov <dbaryshkov@gmail.com>2019-10-30 14:20:23 +0000
commitcfb93616068ff30333c8c49ff3dd379767e951f0 (patch)
tree079701502318ba8b177df292dc4435387e779362
parentce8557344cbe9ac6f6326700e11673239a36129b (diff)
parent445fa3641e7c37afdb153906b5db0a0c74713b97 (diff)
downloadgnutls-cfb93616068ff30333c8c49ff3dd379767e951f0.tar.gz
Merge branch 'remove-uint24' into 'master'
lib: simplify uint24 handling See merge request gnutls/gnutls!1107
-rw-r--r--lib/gnutls_int.h4
-rw-r--r--lib/num.h47
2 files changed, 4 insertions, 47 deletions
diff --git a/lib/gnutls_int.h b/lib/gnutls_int.h
index 3b683a1de1..6a5b61cc69 100644
--- a/lib/gnutls_int.h
+++ b/lib/gnutls_int.h
@@ -263,10 +263,6 @@ typedef enum record_send_state_t {
#define GNUTLS_KX_INVALID (-1)
-typedef struct {
- uint8_t pint[3];
-} uint24;
-
#include <mpi.h>
typedef enum handshake_state_t { STATE0 = 0, STATE1, STATE2,
diff --git a/lib/num.h b/lib/num.h
index c7e73a7527..dd2ee41464 100644
--- a/lib/num.h
+++ b/lib/num.h
@@ -28,42 +28,10 @@
#include <minmax.h>
#include <byteswap.h>
-inline static uint32_t _gnutls_uint24touint32(uint24 num)
-{
- uint32_t ret = 0;
-
- ((uint8_t *) & ret)[1] = num.pint[0];
- ((uint8_t *) & ret)[2] = num.pint[1];
- ((uint8_t *) & ret)[3] = num.pint[2];
- return ret;
-}
-
-inline static uint24 _gnutls_uint32touint24(uint32_t num)
-{
- uint24 ret;
-
- ret.pint[0] = ((uint8_t *) & num)[1];
- ret.pint[1] = ((uint8_t *) & num)[2];
- ret.pint[2] = ((uint8_t *) & num)[3];
- return ret;
-
-}
-
/* data should be at least 3 bytes */
inline static uint32_t _gnutls_read_uint24(const uint8_t * data)
{
- uint32_t res;
- uint24 num;
-
- num.pint[0] = data[0];
- num.pint[1] = data[1];
- num.pint[2] = data[2];
-
- res = _gnutls_uint24touint32(num);
-#ifndef WORDS_BIGENDIAN
- res = bswap_32(res);
-#endif
- return res;
+ return (data[0] << 16) | (data[1] << 8) | (data[2]);
}
inline static uint64_t _gnutls_read_uint64(const uint8_t * data)
@@ -87,16 +55,9 @@ inline static void _gnutls_write_uint64(uint64_t num, uint8_t * data)
inline static void _gnutls_write_uint24(uint32_t num, uint8_t * data)
{
- uint24 tmp;
-
-#ifndef WORDS_BIGENDIAN
- num = bswap_32(num);
-#endif
- tmp = _gnutls_uint32touint24(num);
-
- data[0] = tmp.pint[0];
- data[1] = tmp.pint[1];
- data[2] = tmp.pint[2];
+ data[0] = num >> 16;
+ data[1] = num >> 8;
+ data[2] = num;
}
inline static uint32_t _gnutls_read_uint32(const uint8_t * data)