From 4a83ce37c649dbcfb5a87c022aad626226904363 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 29 Mar 2021 17:13:50 +0200 Subject: [PATCH] libsunrpc: work around arm64 compiler bug in sunStringUnpack() The sunStringUnpack() routine was miscompiled by 7c, as pointer arithmetic is done in 64 bit but the constant -1 offset got expended to a unsigned 32 bit integer. --- sys/src/libsunrpc/rpc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sys/src/libsunrpc/rpc.c b/sys/src/libsunrpc/rpc.c index 657e04233..ee075c57c 100644 --- a/sys/src/libsunrpc/rpc.c +++ b/sys/src/libsunrpc/rpc.c @@ -428,8 +428,9 @@ sunStringUnpack(uchar *a, uchar *ea, uchar **pa, char **s, u32int max) goto Err; /* slide string down over length to make room for NUL */ memmove(dat-1, dat, n); - dat[-1+n] = 0; - *s = (char*)(dat-1); + dat--; + dat[n] = 0; + *s = (char*)dat; return 0; Err: return -1;