From 1626ee384c34018d4d0f2c887cfdca05bccec2ff Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Sun, 7 Jul 2019 21:25:13 -0700 Subject: [PATCH] Avoid pointer arithmetic on `void *` --- netlink_smc_diag.c | 4 ++-- print_timespec.h | 6 ++++-- sockaddr.c | 2 +- ucopy.c | 8 ++++---- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/netlink_smc_diag.c b/netlink_smc_diag.c index 16815fde..09a748a8 100644 --- a/netlink_smc_diag.c +++ b/netlink_smc_diag.c @@ -41,7 +41,7 @@ DECL_NETLINK_DIAG_DECODER(decode_smc_diag_req) if (len >= sizeof(req)) { if (!umoven_or_printaddr(tcp, addr + offset, sizeof(req) - offset, - (void *) &req + offset)) { + (char *) &req + offset)) { PRINT_FIELD_FLAGS("", req, diag_ext, smc_diag_extended_flags, "1<= sizeof(msg)) { if (!umoven_or_printaddr(tcp, addr + offset, sizeof(msg) - offset, - (void *) &msg + offset)) { + (char *) &msg + offset)) { PRINT_FIELD_XVAL("", msg, diag_state, smc_states, "SMC_???"); PRINT_FIELD_XVAL(", ", msg, diag_fallback, diff --git a/print_timespec.h b/print_timespec.h index 0f0e296d..4449f857 100644 --- a/print_timespec.h +++ b/print_timespec.h @@ -67,6 +67,8 @@ bool PRINT_TIMESPEC_ARRAY_DATA_SIZE(const void *arg, const unsigned int nmemb, const size_t size) { + const char *ts = arg; + if (nmemb > size / sizeof(TIMESPEC_T)) { tprints("?"); return false; @@ -74,10 +76,10 @@ PRINT_TIMESPEC_ARRAY_DATA_SIZE(const void *arg, const unsigned int nmemb, tprints("["); - for (unsigned int i = 0; i < nmemb; i++, arg += sizeof(TIMESPEC_T)) { + for (unsigned int i = 0; i < nmemb; i++, ts += sizeof(TIMESPEC_T)) { if (i) tprints(", "); - print_unaligned_timespec_t(arg); + print_unaligned_timespec_t(ts); } tprints("]"); diff --git a/sockaddr.c b/sockaddr.c index b6b9aa7d..948fa517 100644 --- a/sockaddr.c +++ b/sockaddr.c @@ -475,7 +475,7 @@ print_sockaddr_data_ll(const void *const buf, const int addrlen) static void print_sockaddr_data_raw(const void *const buf, const int addrlen) { - const char *const data = buf + SIZEOF_SA_FAMILY; + const char *const data = (const char *)buf + SIZEOF_SA_FAMILY; const int datalen = addrlen - SIZEOF_SA_FAMILY; tprints("sa_data="); diff --git a/ucopy.c b/ucopy.c index 59af8641..3ff59781 100644 --- a/ucopy.c +++ b/ucopy.c @@ -165,7 +165,7 @@ vm_read_mem(const pid_t pid, void *laddr, break; len = next_len; - laddr += copy_len; + laddr = (char *)laddr + copy_len; page_start += page_size; taddr = page_start; } @@ -227,7 +227,7 @@ umoven_peekdata(const int pid, kernel_ulong_t addr, unsigned int len, memcpy(laddr, &u.x[residue], m); residue = 0; addr += sizeof(long); - laddr += m; + laddr = (char *)laddr + m; nread += m; len -= m; } @@ -324,10 +324,10 @@ umovestr_peekdata(const int pid, kernel_ulong_t addr, unsigned int len, memcpy(laddr, &u.x[residue], m); while (residue < sizeof(long)) if (u.x[residue++] == '\0') - return (laddr - orig_addr) + residue; + return nread + residue; residue = 0; addr += sizeof(long); - laddr += m; + laddr = (char *)laddr + m; nread += m; len -= m; } -- 2.27.0