Remove uses of ntohl

This commit is contained in:
Evan Miller 2021-07-14 09:33:24 -04:00
parent 398d46577a
commit fe77bc5c8e
4 changed files with 26 additions and 36 deletions

View File

@ -90,8 +90,6 @@ AC_SUBST(LFLAGS)
CFLAGS="$CFLAGS -Wall -Werror"
AS_CASE([$host],
[*mingw*|*cygwin*], [LDFLAGS="$LDFLAGS -no-undefined"], [])
AS_CASE([$host],
[*mingw*], [LDFLAGS="$LDFLAGS -lWs2_32"], [])
dnl Fuzz testing

View File

@ -26,13 +26,6 @@
#include <inttypes.h>
#include <strings.h>
// for ntohl
#ifdef _WIN32
#include <winsock.h>
#else
#include <arpa/inet.h>
#endif
typedef uint16_t guint16;
typedef uint32_t guint32;
typedef uint64_t guint64;
@ -132,14 +125,7 @@ typedef struct GOptionContext {
#define TRUE 1
#define FALSE 0
#define GUINT16_FROM_LE(l) (uint16_t)l
#define GUINT32_FROM_LE(l) (uint32_t)l
#define GUINT64_FROM_LE(l) (uint64_t)l
#define GINT32_FROM_LE(l) (uint32_t)l
#define GINT32_FROM_BE(l) (int32_t)ntohl(l)
#define GUINT32_SWAP_LE_BE(l) (uint32_t)ntohl(l)
#define GINT32_TO_LE(l) (int32_t)l
#define GINT32_TO_BE(l) (int32_t)ntohl(l)
#define GUINT32_SWAP_LE_BE(l) __builtin_bswap32((uint32_t)(l))
/* string functions */
void *g_memdup(const void *src, size_t len);

View File

@ -405,9 +405,8 @@ unsigned char mdb_pg_get_byte(MdbHandle *mdb, int offset)
int mdb_get_int16(void *buf, int offset)
{
guint16 l;
memcpy(&l, (char*)buf + offset, 2);
return (int)GUINT16_FROM_LE(l);
unsigned char *u8_buf = (unsigned char *)buf + offset;
return u8_buf[0] + (u8_buf[1] << 8);
}
int mdb_pg_get_int16(MdbHandle *mdb, int offset)
{
@ -418,15 +417,13 @@ int mdb_pg_get_int16(MdbHandle *mdb, int offset)
long mdb_get_int32_msb(void *buf, int offset)
{
gint32 l;
memcpy(&l, (char*)buf + offset, 4);
return (long)GINT32_FROM_BE(l);
unsigned char *u8_buf = (unsigned char *)buf + offset;
return (u8_buf[0] << 24) + (u8_buf[1] << 16) + (u8_buf[2] << 8) + u8_buf[3];
}
long mdb_get_int32(void *buf, int offset)
{
gint32 l;
memcpy(&l, (char*)buf + offset, 4);
return (long)GINT32_FROM_LE(l);
unsigned char *u8_buf = (unsigned char *)buf + offset;
return u8_buf[0] + (u8_buf[1] << 8) + (u8_buf[2] << 16) + (u8_buf[3] << 24);
}
long mdb_pg_get_int32(MdbHandle *mdb, int offset)
{
@ -438,8 +435,8 @@ long mdb_pg_get_int32(MdbHandle *mdb, int offset)
float mdb_get_single(void *buf, int offset)
{
union {guint32 g; float f;} f;
memcpy(&f, (char*)buf + offset, 4);
f.g = GUINT32_FROM_LE(f.g);
unsigned char *u8_buf = (unsigned char *)buf + offset;
f.g = u8_buf[0] + (u8_buf[1] << 8) + (u8_buf[2] << 16) + (u8_buf[3] << 24);
return f.f;
}
float mdb_pg_get_single(MdbHandle *mdb, int offset)
@ -452,8 +449,10 @@ float mdb_pg_get_single(MdbHandle *mdb, int offset)
double mdb_get_double(void *buf, int offset)
{
union {guint64 g; double d;} d;
memcpy(&d, (char*)buf + offset, 8);
d.g = GUINT64_FROM_LE(d.g);
unsigned char *u8_buf = (unsigned char *)buf + offset;
d.g = u8_buf[0] + (u8_buf[1] << 8) + (u8_buf[2] << 16) + (u8_buf[3] << 24) +
((guint64)u8_buf[4] << 32) + ((guint64)u8_buf[5] << 40) +
((guint64)u8_buf[6] << 48) + ((guint64)u8_buf[7] << 56);
return d.d;
}
double mdb_pg_get_double(MdbHandle *mdb, int offset)

View File

@ -26,8 +26,9 @@ static int mdb_add_row_to_leaf_pg(MdbTableDef *table, MdbIndex *idx, MdbIndexPag
void
mdb_put_int16(void *buf, guint32 offset, guint32 value)
{
value = GINT32_TO_LE(value);
memcpy((char*)buf + offset, &value, 2);
unsigned char *u8_buf = (unsigned char *)buf + offset;
u8_buf[0] = (value & 0xFF);
u8_buf[1] = (value >> 8) & 0xFF;
}
void
_mdb_put_int16(void *buf, guint32 offset, guint32 value)
@ -40,8 +41,11 @@ __attribute__((alias("mdb_put_int16")));
void
mdb_put_int32(void *buf, guint32 offset, guint32 value)
{
value = GINT32_TO_LE(value);
memcpy((char*)buf + offset, &value, 4);
unsigned char *u8_buf = (unsigned char *)buf + offset;
u8_buf[0] = (value & 0xFF);
u8_buf[1] = (value >> 8) & 0xFF;
u8_buf[2] = (value >> 16) & 0xFF;
u8_buf[3] = (value >> 24) & 0xFF;
}
void
_mdb_put_int32(void *buf, guint32 offset, guint32 value)
@ -54,8 +58,11 @@ __attribute__((alias("mdb_put_int32")));
void
mdb_put_int32_msb(void *buf, guint32 offset, guint32 value)
{
value = GINT32_TO_BE(value);
memcpy((char*)buf + offset, &value, 4);
unsigned char *u8_buf = (unsigned char *)buf + offset;
u8_buf[3] = (value & 0xFF);
u8_buf[2] = (value >> 8) & 0xFF;
u8_buf[1] = (value >> 16) & 0xFF;
u8_buf[0] = (value >> 24) & 0xFF;
}
void
_mdb_put_int32_mdb(void *buf, guint32 offset, guint32 value)