From 2c693e4113fcfa0ac97ef236e3f4f02b18ad7c9c Mon Sep 17 00:00:00 2001 From: Valentin Bugrov Date: Mon, 20 Apr 2026 19:04:56 +0700 Subject: [PATCH] fix(drvers/ins): Apply to sbgECom copilot code-improvements --- src/drivers/ins/sbgecom/sbgecom.cpp | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/drivers/ins/sbgecom/sbgecom.cpp b/src/drivers/ins/sbgecom/sbgecom.cpp index 48d1646d5e..2f6ee53633 100644 --- a/src/drivers/ins/sbgecom/sbgecom.cpp +++ b/src/drivers/ins/sbgecom/sbgecom.cpp @@ -877,12 +877,26 @@ void SbgEcom::send_config_file(SbgEComHandle *pHandle, const char *file_path) return; } - ssize_t ret = read(fd, body, s.st_size); + ssize_t total_read = 0; - if (ret < 0) { - PX4_ERR("Read failed: %s", strerror(errno)); - close(fd); - return; + while (total_read < s.st_size) { + const ssize_t ret = read(fd, body + total_read, s.st_size - total_read); + + if (ret < 0) { + PX4_ERR("Read failed: %s", strerror(errno)); + free(body); + close(fd); + return; + } + + if (ret == 0) { + PX4_ERR("Read failed: unexpected end of file"); + free(body); + close(fd); + return; + } + + total_read += ret; } body[s.st_size] = '\0';