Skip to content

Commit

Permalink
Fix agent crash on ARM64 (Raspberry Pi)
Browse files Browse the repository at this point in the history
The function ILibWebClient_ProcessWebSocketData in
microstack/ILibWebClient.c reads a 64-bit integer from an address that
is only 2-byte aligned. ARM64 kernels support unaligned accesses from
userspace, but it is not enabled by default and frowned upon - the
required exception handling is ugly and inefficient.

Fix that illegal access in a simple way with a memcpy. More involved and
efficient solutions are also available, such as replacing the byte order
conversion functions with de/serialise functions that take a pointer.

Fixes: #183

Signed-off-by: Phil Elwell <[email protected]>
  • Loading branch information
pelwell committed Jun 5, 2023
1 parent ca52306 commit 0ba325a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 6 deletions.
8 changes: 3 additions & 5 deletions microscript/ILibDuktape_Commit.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
// This file is auto-generated, any edits may be overwritten
#define SOURCE_COMMIT_DATE "2022-Aug-24 00:54:18-0700"
#define SOURCE_COMMIT_DATE "2022-Aug-24 00:54:18-0700"
#define SOURCE_COMMIT_HASH "4d1dc7a08244d71ff2838955797dcf59eddd3fe1"
#define SOURCE_COMMIT_HASH "4d1dc7a08244d71ff2838955797dcf59eddd3fe1"
// This file is auto-generated, any edits may be overwritten
#define SOURCE_COMMIT_DATE "2023-Apr-14 13:29:41-0700"
#define SOURCE_COMMIT_HASH "ca52306f87407a122fac70723bfa025b9c422ae6"
4 changes: 3 additions & 1 deletion microstack/ILibWebClient.c
Original file line number Diff line number Diff line change
Expand Up @@ -1360,7 +1360,9 @@ int ILibWebClient_ProcessWebSocketData(char* buffer, int offset, int length, ILi
}
else
{
unsigned long long v = ILibNTOHLL(((unsigned long long*)(buffer + offset + 2))[0]);
unsigned long long v;
memcpy(&v, buffer + offset + 2, sizeof(v));
v = ILibNTOHLL(v);
if(v > 0x7FFFFFFFUL)
{
// this value is too big to store in a 32 bit signed variable, so disconnect the websocket.
Expand Down

0 comments on commit 0ba325a

Please sign in to comment.