From 7dd3cb5ee43ebf4fdb2f0b8f5ef510aa4f58bc8a Mon Sep 17 00:00:00 2001 From: "andrey.bychkov" Date: Wed, 5 Aug 2026 22:19:34 +0300 Subject: [PATCH] small fixes --- libs/main/core/piinit.cpp | 4 ++-- libs/main/io_devices/pican.cpp | 4 ++-- libs/main/io_devices/pisharedmemory.cpp | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/libs/main/core/piinit.cpp b/libs/main/core/piinit.cpp index 266be335..5151e1b9 100644 --- a/libs/main/core/piinit.cpp +++ b/libs/main/core/piinit.cpp @@ -270,8 +270,8 @@ PIInit::~PIInit() { mach_port_deallocate(mach_task_self(), __pi_mac_clock); # endif if (PRIVATE->delete_locs) { - if (__syslocname__) delete __syslocname__; - if (__sysoemname__) delete __sysoemname__; + if (__syslocname__) delete[] __syslocname__; + if (__sysoemname__) delete[] __sysoemname__; } # ifdef PIP_ICU u_cleanup(); diff --git a/libs/main/io_devices/pican.cpp b/libs/main/io_devices/pican.cpp index 6d1e2295..57bdac55 100644 --- a/libs/main/io_devices/pican.cpp +++ b/libs/main/io_devices/pican.cpp @@ -124,8 +124,8 @@ ssize_t PICAN::readDevice(void * read_to, ssize_t max_size) { #ifdef PIP_CAN if (sock == -1) return -1; // piCout << "PICAN read"; - can_frame frame; - ssize_t ret = 0; + can_frame frame = {}; + ssize_t ret = 0; if (PRIVATE->event.wait(sock)) ret = ::read(sock, &frame, sizeof(can_frame)); if (ret < 0) { /*piCoutObj << "Error while read CAN frame " << ret;*/ return -1; diff --git a/libs/main/io_devices/pisharedmemory.cpp b/libs/main/io_devices/pisharedmemory.cpp index 8a4fc2ad..c50ea67d 100644 --- a/libs/main/io_devices/pisharedmemory.cpp +++ b/libs/main/io_devices/pisharedmemory.cpp @@ -251,6 +251,7 @@ int PISharedMemory::read(void * read_to, int max_size) { int PISharedMemory::read(void * read_to, int max_size, int offset) { + if (offset < 0 || max_size < 0 || offset > dsize - max_size) return -1; #ifdef WINDOWS if (!PRIVATE->data) return -1; CopyMemory(read_to, &(((char *)(PRIVATE->data))[offset]), max_size); @@ -271,6 +272,7 @@ int PISharedMemory::write(const void * data, int max_size) { int PISharedMemory::write(const void * data, int max_size, int offset) { + if (offset < 0 || max_size < 0 || offset > dsize - max_size) return -1; #ifdef WINDOWS if (!PRIVATE->data) return -1; CopyMemory(&(((char *)(PRIVATE->data))[offset]), data, max_size);