mirror of
https://github.com/zeek/zeek.git
synced 2025-10-14 12:38:20 +00:00
Fixing endianess error in XDR when data is not 4-byte aligned.
This commit is contained in:
parent
2ced4839e9
commit
d6e6d6b650
2 changed files with 3 additions and 8 deletions
|
@ -17,13 +17,13 @@ uint32 extract_XDR_uint32(const u_char*& buf, int& len)
|
|||
return 0;
|
||||
}
|
||||
|
||||
uint32 bits32 = XDR_aligned(buf) ? *(uint32*) buf :
|
||||
((buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]);
|
||||
// takes care of alignment and endianess differences.
|
||||
uint32 bits32 = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3];
|
||||
|
||||
buf += 4;
|
||||
len -= 4;
|
||||
|
||||
return ntohl(bits32);
|
||||
return bits32;
|
||||
}
|
||||
|
||||
double extract_XDR_uint64_as_double(const u_char*& buf, int& len)
|
||||
|
|
|
@ -10,11 +10,6 @@
|
|||
|
||||
#include "util.h"
|
||||
|
||||
inline int XDR_aligned(const u_char* buf)
|
||||
{
|
||||
return (((unsigned long) buf) & 0x3) == 0;
|
||||
}
|
||||
|
||||
extern uint32 extract_XDR_uint32(const u_char*& buf, int& len);
|
||||
extern double extract_XDR_uint64_as_double(const u_char*& buf, int& len);
|
||||
extern double extract_XDR_time(const u_char*& buf, int& len);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue