You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by je...@apache.org on 2023/05/08 07:57:07 UTC

[nuttx] branch master updated (0f243bde33 -> 1955992ae5)

This is an automated email from the ASF dual-hosted git repository.

jerpelea pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


    from 0f243bde33 arch: fix the issue of asynchronous signal processing
     new 08ababd704 fs/vfs: Add a new argument(size_t len) to inode_getpath
     new 6354a742f1 libc: Add a new argument(size_t fulllen) to lib_getfullpath
     new fa8719bb5a Replace all strcat with strlcat
     new 6f6fce95a2 Replace all sprintf with snprintf
     new 325f395300 Replace all strncpy with strlcpy
     new 1955992ae5 fs: Replace strncat with strlcat

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 arch/arm/src/armv7-m/arm_systick.c                 |  2 +-
 arch/arm/src/armv8-m/arm_systick.c                 |  2 +-
 arch/arm/src/c5471/c5471_watchdog.c                |  4 +-
 arch/arm/src/phy62xx/uart.h                        | 10 ++++-
 arch/arm/src/tlsr82/tlsr82_flash_mtd.c             | 22 ++++++----
 arch/risc-v/src/esp32c3/esp32c3_partition.c        |  2 +-
 arch/sim/src/sim/sim_rptun.c                       |  4 +-
 arch/xtensa/src/esp32/esp32_himem_chardev.c        |  2 +-
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_progmem.c |  3 +-
 boards/arm/stm32/cloudctrl/src/stm32_chipid.c      |  3 +-
 boards/arm/stm32/shenzhou/src/stm32_chipid.c       |  3 +-
 boards/arm/stm32f7/nucleo-144/src/stm32_bringup.c  |  6 +--
 .../arm/stm32h7/nucleo-h743zi/src/stm32_progmem.c  |  3 +-
 .../arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c  | 12 +++---
 .../arm/stm32l4/nucleo-l476rg/src/stm32_appinit.c  | 12 +++---
 boards/sim/sim/sim/src/sim_foc.c                   |  2 +-
 drivers/contactless/mfrc522.c                      |  2 +-
 drivers/modem/alt1250/altcom_hdlr.c                | 49 +++++++++++-----------
 drivers/mtd/smart.c                                |  4 +-
 drivers/net/rpmsgdrv.c                             |  7 ++--
 drivers/segger/stream_rtt.c                        |  4 +-
 drivers/serial/uart_rpmsg.c                        |  6 ++-
 drivers/usbdev/pl2303.c                            |  2 +-
 drivers/video/max7456.c                            |  4 +-
 drivers/wireless/cc1101.c                          |  2 +-
 drivers/wireless/ieee80211/bcm43xxx/bcmf_utils.c   |  7 ++--
 drivers/wireless/ieee802154/at86rf23x/at86rf23x.c  |  9 ++--
 .../wireless/ieee802154/mrf24j40/mrf24j40_regops.c | 18 +++++---
 drivers/wireless/nrf24l01.c                        | 14 +++----
 drivers/wireless/spirit/lib/spirit_spi.c           |  2 +-
 fs/binfs/fs_binfs.c                                |  5 ++-
 fs/hostfs/hostfs.c                                 |  6 +--
 fs/inode/fs_foreachinode.c                         |  7 ++--
 fs/inode/fs_inodegetpath.c                         |  8 ++--
 fs/inode/inode.h                                   |  2 +-
 fs/mount/fs_automount.c                            |  7 ++--
 fs/mount/fs_foreachmountpoint.c                    |  2 +-
 fs/romfs/fs_romfs.c                                |  4 +-
 fs/rpmsgfs/rpmsgfs.c                               |  4 +-
 fs/vfs/fs_dir.c                                    |  2 +-
 fs/vfs/fs_ioctl.c                                  |  2 +-
 graphics/nxmu/nxmu_server.c                        |  2 +-
 include/nuttx/wireless/bluetooth/bt_core.h         |  2 +-
 libs/libc/libc.h                                   |  3 +-
 libs/libc/misc/lib_envpath.c                       |  2 +-
 libs/libc/misc/lib_fchmodat.c                      |  2 +-
 libs/libc/misc/lib_fstatat.c                       |  2 +-
 libs/libc/misc/lib_getfullpath.c                   |  9 ++--
 libs/libc/misc/lib_mkdirat.c                       |  2 +-
 libs/libc/misc/lib_mkfifo.c                        |  2 +-
 libs/libc/misc/lib_mknod.c                         |  2 +-
 libs/libc/misc/lib_openat.c                        |  2 +-
 libs/libc/misc/lib_utimensat.c                     |  2 +-
 libs/libc/stdio/lib_renameat.c                     |  6 ++-
 libs/libc/unistd/lib_access.c                      |  2 +-
 libs/libc/unistd/lib_fchownat.c                    |  2 +-
 libs/libc/unistd/lib_linkat.c                      |  6 ++-
 libs/libc/unistd/lib_readlinkat.c                  |  2 +-
 libs/libc/unistd/lib_swab.c                        |  2 +-
 libs/libc/unistd/lib_symlinkat.c                   |  2 +-
 libs/libc/unistd/lib_unlinkat.c                    |  2 +-
 libs/libc/unistd/lib_utimes.c                      |  2 +-
 libs/libnx/nxmu/nx_connect.c                       |  2 +-
 mm/mempool/mempool.c                               |  5 ++-
 mm/mm_heap/mm_memdump.c                            |  5 ++-
 mm/tlsf/mm_tlsf.c                                  |  5 ++-
 net/neighbor/neighbor_dumpentry.c                  |  6 +--
 sched/environ/env_setenv.c                         |  2 +-
 sched/pthread/pthread_create.c                     |  3 +-
 69 files changed, 198 insertions(+), 159 deletions(-)


[nuttx] 04/06: Replace all sprintf with snprintf

Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jerpelea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 6f6fce95a2c21fcde342ef4d0f35f15f8328cf32
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sun Mar 5 22:34:33 2023 +0800

    Replace all sprintf with snprintf
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 arch/arm/src/armv7-m/arm_systick.c                 |  2 +-
 arch/arm/src/armv8-m/arm_systick.c                 |  2 +-
 arch/arm/src/c5471/c5471_watchdog.c                |  4 ++--
 arch/arm/src/phy62xx/uart.h                        | 10 +++++++++-
 arch/arm/src/tlsr82/tlsr82_flash_mtd.c             | 22 ++++++++++++++--------
 arch/risc-v/src/esp32c3/esp32c3_partition.c        |  2 +-
 boards/arm/stm32/cloudctrl/src/stm32_chipid.c      |  3 ++-
 boards/arm/stm32/shenzhou/src/stm32_chipid.c       |  3 ++-
 boards/arm/stm32f7/nucleo-144/src/stm32_bringup.c  |  6 +++---
 .../arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c  | 12 ++++++------
 .../arm/stm32l4/nucleo-l476rg/src/stm32_appinit.c  | 12 ++++++------
 boards/sim/sim/sim/src/sim_foc.c                   |  2 +-
 drivers/contactless/mfrc522.c                      |  2 +-
 drivers/mtd/smart.c                                |  4 +++-
 drivers/net/rpmsgdrv.c                             |  7 ++++---
 drivers/segger/stream_rtt.c                        |  4 ++--
 drivers/serial/uart_rpmsg.c                        |  6 ++++--
 drivers/usbdev/pl2303.c                            |  2 +-
 drivers/wireless/cc1101.c                          |  2 +-
 drivers/wireless/ieee80211/bcm43xxx/bcmf_utils.c   |  7 ++++---
 drivers/wireless/ieee802154/at86rf23x/at86rf23x.c  |  9 ++++++---
 .../wireless/ieee802154/mrf24j40/mrf24j40_regops.c | 18 ++++++++++++------
 drivers/wireless/nrf24l01.c                        | 14 +++++++-------
 drivers/wireless/spirit/lib/spirit_spi.c           |  2 +-
 fs/inode/fs_foreachinode.c                         |  7 ++++---
 fs/mount/fs_automount.c                            |  7 ++++---
 fs/mount/fs_foreachmountpoint.c                    |  2 +-
 graphics/nxmu/nxmu_server.c                        |  2 +-
 include/nuttx/wireless/bluetooth/bt_core.h         |  2 +-
 libs/libc/misc/lib_envpath.c                       |  2 +-
 libs/libnx/nxmu/nx_connect.c                       |  2 +-
 mm/mempool/mempool.c                               |  5 +++--
 mm/mm_heap/mm_memdump.c                            |  5 +++--
 mm/tlsf/mm_tlsf.c                                  |  5 +++--
 net/neighbor/neighbor_dumpentry.c                  |  6 +++---
 sched/environ/env_setenv.c                         |  2 +-
 36 files changed, 120 insertions(+), 84 deletions(-)

diff --git a/arch/arm/src/armv7-m/arm_systick.c b/arch/arm/src/armv7-m/arm_systick.c
index 25b2a08834..e45728c0cd 100644
--- a/arch/arm/src/armv7-m/arm_systick.c
+++ b/arch/arm/src/armv7-m/arm_systick.c
@@ -302,7 +302,7 @@ struct timer_lowerhalf_s *systick_initialize(bool coreclk,
     {
       char devname[32];
 
-      sprintf(devname, "/dev/timer%d", minor);
+      snprintf(devname, sizeof(devname), "/dev/timer%d", minor);
       timer_register(devname, (struct timer_lowerhalf_s *)lower);
     }
 
diff --git a/arch/arm/src/armv8-m/arm_systick.c b/arch/arm/src/armv8-m/arm_systick.c
index 87dad90788..d9733aefd7 100644
--- a/arch/arm/src/armv8-m/arm_systick.c
+++ b/arch/arm/src/armv8-m/arm_systick.c
@@ -302,7 +302,7 @@ struct timer_lowerhalf_s *systick_initialize(bool coreclk,
     {
       char devname[32];
 
-      sprintf(devname, "/dev/timer%d", minor);
+      snprintf(devname, sizeof(devname), "/dev/timer%d", minor);
       timer_register(devname, (struct timer_lowerhalf_s *)lower);
     }
 
diff --git a/arch/arm/src/c5471/c5471_watchdog.c b/arch/arm/src/c5471/c5471_watchdog.c
index a27f9e4537..ba6014c2c4 100644
--- a/arch/arm/src/c5471/c5471_watchdog.c
+++ b/arch/arm/src/c5471/c5471_watchdog.c
@@ -250,8 +250,8 @@ static ssize_t wdt_read(struct file *filep, char *buffer, size_t buflen)
   wdinfo("buflen=%d\n", buflen);
   if (buflen >= 18)
     {
-      sprintf(buffer, "%08" PRIx32 " %08" PRIx32 "\n",
-              c5471_wdt_cntl, c5471_wdt_count);
+      snprintf(buffer, buflen, "%08" PRIx32 " %08" PRIx32 "\n",
+               c5471_wdt_cntl, c5471_wdt_count);
       return 18;
     }
 
diff --git a/arch/arm/src/phy62xx/uart.h b/arch/arm/src/phy62xx/uart.h
index 518575c338..4cc1823a3d 100644
--- a/arch/arm/src/phy62xx/uart.h
+++ b/arch/arm/src/phy62xx/uart.h
@@ -165,7 +165,15 @@ int hal_uart_set_tx_buf(UART_INDEX_e uart_index, uint8_t *buf,
     uint16_t size);
 int hal_uart_get_tx_ready(UART_INDEX_e uart_index);
 int hal_uart_send_buff(UART_INDEX_e uart_index, uint8_t *buff, uint16_t len);
-#define logx(...) {char tmp_str[128]; sprintf(tmp_str, __VA_ARGS__); hal_uart_send_buff(0, &tmp_str, strlen(tmp_str) + 1);}
+#define logx(...) \
+  do \
+    { \
+      char tmp_str[128]; \
+      snprintf(tmp_str, sizeof(tmp_str), __VA_ARGS__); \
+      hal_uart_send_buff(0, &tmp_str, strlen(tmp_str) + 1); \
+    } \
+  while (0)
+
 int hal_uart_send_byte(UART_INDEX_e uart_index, unsigned char data);
 void __attribute__((weak)) hal_UART0_IRQHandler(void);
 void __attribute__((weak)) hal_UART1_IRQHandler(void);
diff --git a/arch/arm/src/tlsr82/tlsr82_flash_mtd.c b/arch/arm/src/tlsr82/tlsr82_flash_mtd.c
index 90bb9b91f5..ade712de50 100644
--- a/arch/arm/src/tlsr82/tlsr82_flash_mtd.c
+++ b/arch/arm/src/tlsr82/tlsr82_flash_mtd.c
@@ -292,13 +292,16 @@ static void tlsr82_flash_print(const char *msg, const uint8_t *buf,
     {
       if (i % 16 == 0)
         {
-          off += sprintf(&print_buf[off], "0x%08x:", i);
+          snprintf(&print_buf[off],
+                   sizeof(print_buf) - off, "0x%08x:", i);
+          off += strlen(&print_buf[off]);
         }
 
-      off += sprintf(&print_buf[off], "0x%02x ", buf[i]);
-      i++;
+      snprintf(&print_buf[off],
+               sizeof(print_buf) - off, "0x%02x ", buf[i]);
+      off += strlen(&print_buf[off]);
 
-      if (i % 16 == 0)
+      if (++i % 16 == 0)
         {
           ferr("%s\n", print_buf);
           off = 0;
@@ -320,7 +323,7 @@ static void tlsr82_flash_print(const char *msg, const uint8_t *buf,
 static int tlsr82_flash_test(struct tlsr82_flash_dev_s *priv)
 {
   struct mtd_geometry_s geo;
-  int ret      = OK;
+  int ret      = 0;
   int npages   = 0;
   int i        = 0;
   int j        = 0;
@@ -329,13 +332,16 @@ static int tlsr82_flash_test(struct tlsr82_flash_dev_s *priv)
 
   /* 1. print the manufacture id and unique id */
 
-  ret = 0;
   ferr("Flash information print:\n");
   ferr("    Flash MID: 0x%08lx\n", g_flash_mid);
-  ret += sprintf(&print_buf[ret], "    Flash UID: ");
+  snprintf(&print_buf[ret],
+           sizeof(print_buf) - ret, "    Flash UID: ");
+  ret += strlen(&print_buf[ret]);
   for (i = 1; i < 16; i++)
     {
-      ret += sprintf(&print_buf[ret], "0x%x ", g_flash_uid[i]);
+      snprintf(&print_buf[ret],
+               sizeof(print_buf) - ret, "0x%x ", g_flash_uid[i]);
+      ret += strlen(&print_buf[ret]);
     }
 
   ferr("%s\n", print_buf);
diff --git a/arch/risc-v/src/esp32c3/esp32c3_partition.c b/arch/risc-v/src/esp32c3/esp32c3_partition.c
index c83dfc5efd..55b315ea2f 100644
--- a/arch/risc-v/src/esp32c3/esp32c3_partition.c
+++ b/arch/risc-v/src/esp32c3/esp32c3_partition.c
@@ -607,7 +607,7 @@ int esp32c3_partition_init(void)
         }
 
       strlcpy(label, (char *)info->label, sizeof(label));
-      sprintf(path, "%s%s", path_base, label);
+      snprintf(path, sizeof(path), "%s%s", path_base, label);
 
       finfo("INFO: [label]:   %s\n", label);
       finfo("INFO: [type]:    %d\n", info->type);
diff --git a/boards/arm/stm32/cloudctrl/src/stm32_chipid.c b/boards/arm/stm32/cloudctrl/src/stm32_chipid.c
index fcb8dc53cc..d7245c037c 100644
--- a/boards/arm/stm32/cloudctrl/src/stm32_chipid.c
+++ b/boards/arm/stm32/cloudctrl/src/stm32_chipid.c
@@ -63,7 +63,8 @@ const char *stm32_getchipid_string(void)
 
   for (i = 0, c = 0; i < 12; i++)
     {
-      sprintf(&cpuid[c], "%02X", getreg8(0x1ffff7e8 + 11 - i));
+      snprintf(&cpuid[c], sizeof(cpuid) - c,
+               "%02X", getreg8(0x1ffff7e8 + 11 - i));
       c += 2;
       if (i % 4 == 3)
         {
diff --git a/boards/arm/stm32/shenzhou/src/stm32_chipid.c b/boards/arm/stm32/shenzhou/src/stm32_chipid.c
index 3aee32a648..e1842cc5f6 100644
--- a/boards/arm/stm32/shenzhou/src/stm32_chipid.c
+++ b/boards/arm/stm32/shenzhou/src/stm32_chipid.c
@@ -63,7 +63,8 @@ const char *stm32_getchipid_string(void)
 
   for (i = 0, c = 0; i < 12; i++)
     {
-      sprintf(&cpuid[c], "%02X", getreg8(0x1ffff7e8 + 11 - i));
+      snprintf(&cpuid[c], sizeof(cpuid) - c,
+               "%02X", getreg8(0x1ffff7e8 + 11 - i));
       c += 2;
       if (i % 4 == 3)
         {
diff --git a/boards/arm/stm32f7/nucleo-144/src/stm32_bringup.c b/boards/arm/stm32f7/nucleo-144/src/stm32_bringup.c
index aeecb27310..e51b91bf63 100644
--- a/boards/arm/stm32f7/nucleo-144/src/stm32_bringup.c
+++ b/boards/arm/stm32f7/nucleo-144/src/stm32_bringup.c
@@ -174,7 +174,7 @@ int stm32_bringup(void)
   char buf[9];
 
 #ifdef CONFIG_STM32F7_TIM1_QE
-  sprintf(buf, "/dev/qe0");
+  snprintf(buf, sizeof(buf), "/dev/qe0");
   ret = stm32_qencoder_initialize(buf, 1);
   if (ret < 0)
     {
@@ -186,7 +186,7 @@ int stm32_bringup(void)
 #endif
 
 #ifdef CONFIG_STM32F7_TIM3_QE
-  sprintf(buf, "/dev/qe2");
+  snprintf(buf, sizeof(buf), "/dev/qe2");
   ret = stm32_qencoder_initialize(buf, 3);
   if (ret < 0)
     {
@@ -198,7 +198,7 @@ int stm32_bringup(void)
 #endif
 
 #ifdef CONFIG_STM32F7_TIM4_QE
-  sprintf(buf, "/dev/qe3");
+  snprintf(buf, sizeof(buf), "/dev/qe3");
   ret = stm32_qencoder_initialize(buf, 4);
   if (ret < 0)
     {
diff --git a/boards/arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c b/boards/arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c
index 2aa082926b..528fdb9332 100644
--- a/boards/arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c
+++ b/boards/arm/stm32l4/nucleo-l432kc/src/stm32_appinit.c
@@ -316,7 +316,7 @@ int board_app_initialize(uintptr_t arg)
   index = 0;
 
 #ifdef CONFIG_STM32L4_TIM1_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 1);
   if (ret != OK)
     {
@@ -327,7 +327,7 @@ int board_app_initialize(uintptr_t arg)
 #endif
 
 #ifdef CONFIG_STM32L4_TIM2_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 2);
   if (ret != OK)
     {
@@ -338,7 +338,7 @@ int board_app_initialize(uintptr_t arg)
 #endif
 
 #ifdef CONFIG_STM32L4_TIM3_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 3);
   if (ret != OK)
     {
@@ -349,7 +349,7 @@ int board_app_initialize(uintptr_t arg)
 #endif
 
 #ifdef CONFIG_STM32L4_TIM4_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 4);
   if (ret != OK)
     {
@@ -360,7 +360,7 @@ int board_app_initialize(uintptr_t arg)
 #endif
 
 #ifdef CONFIG_STM32L4_TIM5_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 5);
   if (ret != OK)
     {
@@ -371,7 +371,7 @@ int board_app_initialize(uintptr_t arg)
 #endif
 
 #ifdef CONFIG_STM32L4_TIM8_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 8);
   if (ret != OK)
     {
diff --git a/boards/arm/stm32l4/nucleo-l476rg/src/stm32_appinit.c b/boards/arm/stm32l4/nucleo-l476rg/src/stm32_appinit.c
index e6ed2b423d..a608045332 100644
--- a/boards/arm/stm32l4/nucleo-l476rg/src/stm32_appinit.c
+++ b/boards/arm/stm32l4/nucleo-l476rg/src/stm32_appinit.c
@@ -318,7 +318,7 @@ int board_app_initialize(uintptr_t arg)
   index = 0;
 
 #ifdef CONFIG_STM32L4_TIM1_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 1);
   if (ret < 0)
     {
@@ -329,7 +329,7 @@ int board_app_initialize(uintptr_t arg)
 #endif
 
 #ifdef CONFIG_STM32L4_TIM2_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 2);
   if (ret < 0)
     {
@@ -340,7 +340,7 @@ int board_app_initialize(uintptr_t arg)
 #endif
 
 #ifdef CONFIG_STM32L4_TIM3_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 3);
   if (ret < 0)
     {
@@ -351,7 +351,7 @@ int board_app_initialize(uintptr_t arg)
 #endif
 
 #ifdef CONFIG_STM32L4_TIM4_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 4);
   if (ret < 0)
     {
@@ -362,7 +362,7 @@ int board_app_initialize(uintptr_t arg)
 #endif
 
 #ifdef CONFIG_STM32L4_TIM5_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 5);
   if (ret < 0)
     {
@@ -373,7 +373,7 @@ int board_app_initialize(uintptr_t arg)
 #endif
 
 #ifdef CONFIG_STM32L4_TIM8_QE
-  sprintf(buf, "/dev/qe%d", index++);
+  snprintf(buf, sizeof(buf), "/dev/qe%d", index++);
   ret = stm32l4_qencoder_initialize(buf, 8);
   if (ret < 0)
     {
diff --git a/boards/sim/sim/sim/src/sim_foc.c b/boards/sim/sim/sim/src/sim_foc.c
index bc3c820321..7d3c675179 100644
--- a/boards/sim/sim/sim/src/sim_foc.c
+++ b/boards/sim/sim/sim/src/sim_foc.c
@@ -86,7 +86,7 @@ int sim_foc_setup(void)
 
           /* Get devpath for FOC */
 
-          sprintf(devpath, "/dev/foc%d", i);
+          snprintf(devpath, sizeof(devpath), "/dev/foc%d", i);
 
           /* Register FOC device */
 
diff --git a/drivers/contactless/mfrc522.c b/drivers/contactless/mfrc522.c
index 378aec028a..9b49dcd8f2 100644
--- a/drivers/contactless/mfrc522.c
+++ b/drivers/contactless/mfrc522.c
@@ -1391,7 +1391,7 @@ int mfrc522_selftest(FAR struct mfrc522_dev_s *dev)
     {
       for (j = 0, k = 0; j < 8; j++, k += 3)
         {
-          sprintf(&outbuf[k], " %02x", result[i + j]);
+          snprintf(&outbuf[k], sizeof(outbuf) - k, " %02x", result[i + j]);
         }
 
       ctlsinfo("  %02x:%s\n", i, outbuf);
diff --git a/drivers/mtd/smart.c b/drivers/mtd/smart.c
index bc6c16c6e1..496e4f06f7 100644
--- a/drivers/mtd/smart.c
+++ b/drivers/mtd/smart.c
@@ -3900,7 +3900,9 @@ retry:
             {
               for (j = 0, k = 0; j < 8 && j < remaining ; j++)
                 {
-                  k += sprintf(&buffer[k], "%12d", dev->freecount[i + j]);
+                  snprintf(&buffer[k], sizeof(buffer) - k,
+                           "%12d", dev->freecount[i + j]);
+                  k += strlen(&buffer[k]);
                 }
 
               ferr("%04x:%s\n", i, buffer);
diff --git a/drivers/net/rpmsgdrv.c b/drivers/net/rpmsgdrv.c
index 28dc87b6cf..c519ee8463 100644
--- a/drivers/net/rpmsgdrv.c
+++ b/drivers/net/rpmsgdrv.c
@@ -373,8 +373,8 @@ static int net_rpmsg_drv_sockioctl_handler(FAR struct rpmsg_endpoint *ept,
 
   /* Save pointers into argv */
 
-  sprintf(arg1, "%p", ept);
-  sprintf(arg2, "%p", data);
+  snprintf(arg1, sizeof(arg1), "%p", ept);
+  snprintf(arg2, sizeof(arg2), "%p", data);
 
   argv[0] = arg1;
   argv[1] = arg2;
@@ -565,7 +565,8 @@ static void net_rpmsg_drv_device_created(FAR struct rpmsg_device *rdev,
   if (!strcmp(priv->cpuname, rpmsg_get_cpuname(rdev)))
     {
       priv->ept.priv = dev;
-      sprintf(eptname, NET_RPMSG_EPT_NAME, priv->devname);
+      snprintf(eptname, sizeof(eptname),
+               NET_RPMSG_EPT_NAME, priv->devname);
 
       rpmsg_create_ept(&priv->ept, rdev, eptname,
                        RPMSG_ADDR_ANY, RPMSG_ADDR_ANY,
diff --git a/drivers/segger/stream_rtt.c b/drivers/segger/stream_rtt.c
index 1f3d97651c..5caef0ff87 100644
--- a/drivers/segger/stream_rtt.c
+++ b/drivers/segger/stream_rtt.c
@@ -121,7 +121,7 @@ void lib_rttoutstream_open(FAR struct lib_rttoutstream_s *stream,
       bufsize = bufsize ? bufsize : BUFFER_SIZE_UP;
       stream->buffer = (FAR char *)kmm_malloc(bufsize);
       DEBUGASSERT(stream->buffer);
-      sprintf(stream->name, "rtt%d", channel);
+      snprintf(stream->name, sizeof(stream->name), "rtt%d", channel);
       SEGGER_RTT_ConfigUpBuffer(channel, stream->name, stream->buffer,
                                 bufsize, SEGGER_RTT_MODE_DEFAULT);
     }
@@ -169,7 +169,7 @@ void lib_rttinstream_open(FAR struct lib_rttinstream_s *stream,
       bufsize = bufsize ? bufsize : BUFFER_SIZE_DOWN;
       stream->buffer = (FAR char *)kmm_malloc(bufsize);
       DEBUGASSERT(stream->buffer);
-      sprintf(stream->name, "rtt%d", channel);
+      snprintf(stream->name, sizeof(stream->name), "rtt%d", channel);
       SEGGER_RTT_ConfigDownBuffer(channel, stream->name, stream->buffer,
                                   bufsize, SEGGER_RTT_MODE_DEFAULT);
     }
diff --git a/drivers/serial/uart_rpmsg.c b/drivers/serial/uart_rpmsg.c
index 15dc547da7..7cc1587db7 100644
--- a/drivers/serial/uart_rpmsg.c
+++ b/drivers/serial/uart_rpmsg.c
@@ -323,7 +323,8 @@ static void uart_rpmsg_device_created(FAR struct rpmsg_device *rdev,
   if (strcmp(priv->cpuname, rpmsg_get_cpuname(rdev)) == 0)
     {
       priv->ept.priv = dev;
-      sprintf(eptname, "%s%s", UART_RPMSG_EPT_PREFIX, priv->devname);
+      snprintf(eptname, sizeof(eptname), "%s%s",
+               UART_RPMSG_EPT_PREFIX, priv->devname);
       rpmsg_create_ept(&priv->ept, rdev, eptname,
                        RPMSG_ADDR_ANY, RPMSG_ADDR_ANY,
                        uart_rpmsg_ept_cb, NULL);
@@ -451,7 +452,8 @@ int uart_rpmsg_init(FAR const char *cpuname, FAR const char *devname,
     }
 
   nxmutex_init(&priv->lock);
-  sprintf(dev_name, "%s%s", UART_RPMSG_DEV_PREFIX, devname);
+  snprintf(dev_name, sizeof(dev_name), "%s%s",
+           UART_RPMSG_DEV_PREFIX, devname);
   uart_register(dev_name, dev);
 
   if (dev->isconsole)
diff --git a/drivers/usbdev/pl2303.c b/drivers/usbdev/pl2303.c
index 9248acd76f..42e1ec64f4 100644
--- a/drivers/usbdev/pl2303.c
+++ b/drivers/usbdev/pl2303.c
@@ -2408,7 +2408,7 @@ int usbdev_serialinitialize(int minor)
 
   /* Register the single port supported by this implementation */
 
-  sprintf(devname, "/dev/ttyUSB%d", minor);
+  snprintf(devname, sizeof(devname), "/dev/ttyUSB%d", minor);
   ret = uart_register(devname, &priv->serdev);
   if (ret)
     {
diff --git a/drivers/wireless/cc1101.c b/drivers/wireless/cc1101.c
index 91d0e434b7..6ea9e2145e 100644
--- a/drivers/wireless/cc1101.c
+++ b/drivers/wireless/cc1101.c
@@ -862,7 +862,7 @@ void cc1101_dumpregs(struct cc1101_dev_s *dev, uint8_t addr, uint8_t length)
 
       for (i = 0, j = 0; i < readsize; i++, j += 3)
         {
-          sprintf(&outbuf[j], " %02x", regbuf[i]);
+          snprintf(&outbuf[j], sizeof(outbuf) - j, " %02x", regbuf[i]);
         }
 
       /* Dump the formatted data to the syslog output */
diff --git a/drivers/wireless/ieee80211/bcm43xxx/bcmf_utils.c b/drivers/wireless/ieee80211/bcm43xxx/bcmf_utils.c
index fd967c0d8c..dd39f819b9 100644
--- a/drivers/wireless/ieee80211/bcm43xxx/bcmf_utils.c
+++ b/drivers/wireless/ieee80211/bcm43xxx/bcmf_utils.c
@@ -62,9 +62,10 @@ void bcmf_hexdump(FAR uint8_t *data, unsigned int len, unsigned long offset)
           char_count = 0;
         }
 
-      sprintf(hex_line + 3 * char_count, "%02x ", data[i]);
-      sprintf(char_line + char_count, "%c",
-              data[i] < 0x20 || data[i] >= 0x7f? '.': data[i]);
+      snprintf(hex_line + 3 * char_count, sizeof(hex_line) - 3 * char_count,
+               "%02x ", data[i]);
+      snprintf(char_line + char_count, sizeof(char_line) - char_count,
+               "%c", data[i] < 0x20 || data[i] >= 0x7f? '.' : data[i]);
       char_count++;
     }
 
diff --git a/drivers/wireless/ieee802154/at86rf23x/at86rf23x.c b/drivers/wireless/ieee802154/at86rf23x/at86rf23x.c
index 75002cff58..c22566b761 100644
--- a/drivers/wireless/ieee802154/at86rf23x/at86rf23x.c
+++ b/drivers/wireless/ieee802154/at86rf23x/at86rf23x.c
@@ -1302,12 +1302,15 @@ static int at86rf23x_regdump(FAR struct at86rf23x_dev_s *dev)
 
       if ((i & 0x0f) == 0)
         {
-          len = sprintf(buf, "%02x: ", i & 0xff);
+          snprintf(buf, sizeof(buf), "%02x: ", i & 0xff);
+          len = strlen(buf);
         }
 
       /* Print the register value */
 
-      len += sprintf(buf + len, "%02x ", at86rf23x_getreg(dev->spi, i));
+      snprintf(buf + len, sizeof(buf) - len,
+               "%02x ", at86rf23x_getreg(dev->spi, i));
+      len += strlen(buf + len);
 
       /* At the end of each 15 regs or end of rf233s regs and actually print
        * debug message.
@@ -1315,7 +1318,7 @@ static int at86rf23x_regdump(FAR struct at86rf23x_dev_s *dev)
 
       if ((i & 15) == 15 || i == 0x2f)
         {
-          sprintf(buf + len, "\n");
+          snprintf(buf + len, sizeof(buf) - len, "\n");
           wlinfo("%s", buf);
         }
     }
diff --git a/drivers/wireless/ieee802154/mrf24j40/mrf24j40_regops.c b/drivers/wireless/ieee802154/mrf24j40/mrf24j40_regops.c
index d1efa19d62..2bd30d7469 100644
--- a/drivers/wireless/ieee802154/mrf24j40/mrf24j40_regops.c
+++ b/drivers/wireless/ieee802154/mrf24j40/mrf24j40_regops.c
@@ -142,13 +142,16 @@ int mrf24j40_regdump(FAR struct mrf24j40_radio_s *dev)
     {
       if ((i & 15) == 0)
         {
-          len = sprintf(buf, "%02" PRIx32 ": ", i & 0xff);
+          snprintf(buf, sizeof(buf), "%02" PRIx32 ": ", i & 0xff);
+          len = strlen(buf);
         }
 
-      len += sprintf(buf + len, "%02x ", mrf24j40_getreg(dev->spi, i));
+      snprintf(buf + len, sizeof(buf) - len,
+               "%02x ", mrf24j40_getreg(dev->spi, i));
+      len += strlen(buf + len);
       if ((i & 15) == 15)
         {
-          sprintf(buf + len, "\n");
+          snprintf(buf + len, sizeof(buf) - len, "\n");
           wlinfo("%s", buf);
         }
     }
@@ -159,13 +162,16 @@ int mrf24j40_regdump(FAR struct mrf24j40_radio_s *dev)
     {
       if ((i & 15) == 0)
         {
-          len = sprintf(buf, "%02" PRIx32 ": ", i & 0xff);
+          snprintf(buf, sizeof(buf), "%02" PRIx32 ": ", i & 0xff);
+          len = strlen(buf);
         }
 
-      len += sprintf(buf + len, "%02x ", mrf24j40_getreg(dev->spi, i));
+      snprintf(buf + len, sizeof(buf) - len,
+               "%02x ", mrf24j40_getreg(dev->spi, i));
+      len += strlen(buf + len);
       if ((i & 15) == 15)
         {
-          sprintf(buf + len, "\n");
+          snprintf(buf + len, sizeof(buf) - len, "\n");
           wlinfo("%s", buf);
         }
     }
diff --git a/drivers/wireless/nrf24l01.c b/drivers/wireless/nrf24l01.c
index dd80db384f..f72d69d3b3 100644
--- a/drivers/wireless/nrf24l01.c
+++ b/drivers/wireless/nrf24l01.c
@@ -210,8 +210,8 @@ static void nrf24l01_worker(FAR void *arg);
 #endif
 
 #ifdef CONFIG_DEBUG_WIRELESS
-static void binarycvt(FAR char *deststr, FAR const uint8_t *srcbin,
-                      size_t srclen);
+static void binarycvt(FAR char *deststr, size_t destlen,
+                      FAR const uint8_t *srcbin, size_t srclen);
 #endif
 
 /* POSIX API */
@@ -912,13 +912,13 @@ out:
  ****************************************************************************/
 
 #ifdef CONFIG_DEBUG_WIRELESS
-static void binarycvt(FAR char *deststr, FAR const uint8_t *srcbin,
-                      size_t srclen)
+static void binarycvt(FAR char *deststr, size_t destlen,
+                      FAR const uint8_t *srcbin, size_t srclen)
 {
   int i = 0;
-  while (i < srclen)
+  while (i < srclen && 2 * (i + 1) < destlen)
     {
-      sprintf(deststr + i * 2, "%02x", srcbin[i]);
+      snprintf(deststr + i * 2, destlen - i * 2, "%02x", srcbin[i]);
       ++i;
     }
 
@@ -2084,7 +2084,7 @@ void nrf24l01_dumpregs(FAR struct nrf24l01_dev_s *dev)
          nrf24l01_readregbyte(dev, NRF24L01_OBSERVE_TX));
 
   nrf24l01_readreg(dev, NRF24L01_TX_ADDR, addr, dev->addrlen);
-  binarycvt(addrstr, addr, dev->addrlen);
+  binarycvt(addrstr, sizeof(addrstr), addr, dev->addrlen);
   syslog(LOG_INFO, "TX_ADDR:   %s\n", addrstr);
 
   syslog(LOG_INFO, "CD:        %02x\n",
diff --git a/drivers/wireless/spirit/lib/spirit_spi.c b/drivers/wireless/spirit/lib/spirit_spi.c
index a9c5a9ee4b..2c7302d381 100644
--- a/drivers/wireless/spirit/lib/spirit_spi.c
+++ b/drivers/wireless/spirit/lib/spirit_spi.c
@@ -87,7 +87,7 @@ static void spirit_dump_buffer(FAR const uint8_t *buffer, unsigned int buflen)
               *ptr++ = ' ';
             }
 
-          sprintf(ptr, "%02x ", *buffer++);
+          snprintf(ptr, sizeof(outbuf) - (ptr - outbuf), "%02x ", *buffer++);
           ptr += 3;
         }
 
diff --git a/fs/inode/fs_foreachinode.c b/fs/inode/fs_foreachinode.c
index 8dc1666dbb..7bab3fc8a1 100644
--- a/fs/inode/fs_foreachinode.c
+++ b/fs/inode/fs_foreachinode.c
@@ -55,7 +55,7 @@ struct inode_path_s
 {
   foreach_inode_t handler;
   FAR void       *arg;
-  char            path[CONFIG_PATH_MAX];
+  char            path[PATH_MAX];
 };
 
 /****************************************************************************
@@ -110,7 +110,7 @@ static int foreach_inodelevel(FAR struct inode *node,
 
           /* Make sure that this would not exceed the maximum path length */
 
-          if (pathlen + namlen > PATH_MAX)
+          if (pathlen + namlen >= PATH_MAX)
             {
               ret = -ENAMETOOLONG;
               break;
@@ -118,7 +118,8 @@ static int foreach_inodelevel(FAR struct inode *node,
 
           /* Append the path segment to this inode and recurse */
 
-          sprintf(&info->path[pathlen], "/%s", node->i_name);
+          snprintf(&info->path[pathlen], sizeof(info->path) - pathlen,
+                   "/%s", node->i_name);
           ret = foreach_inodelevel(node->i_child, info);
 
           /* Truncate the path name back to the correct length */
diff --git a/fs/mount/fs_automount.c b/fs/mount/fs_automount.c
index da19108e9d..628a37d9f7 100644
--- a/fs/mount/fs_automount.c
+++ b/fs/mount/fs_automount.c
@@ -857,7 +857,8 @@ FAR void *automount_initialize(FAR const struct automount_lower_s *lower)
 
   /* Register driver */
 
-  sprintf(devpath, CONFIG_FS_AUTOMOUNTER_VFS_PATH "%s", lower->mountpoint);
+  snprintf(devpath, sizeof(devpath),
+           CONFIG_FS_AUTOMOUNTER_VFS_PATH "%s", lower->mountpoint);
 
   ret = register_driver(devpath, &g_automount_fops, 0444, priv);
   if (ret < 0)
@@ -918,8 +919,8 @@ void automount_uninitialize(FAR void *handle)
     {
       char devpath[PATH_MAX];
 
-      sprintf(devpath, CONFIG_FS_AUTOMOUNTER_VFS_PATH "%s",
-              lower->mountpoint);
+      snprintf(devpath, sizeof(devpath),
+               CONFIG_FS_AUTOMOUNTER_VFS_PATH "%s", lower->mountpoint);
 
       unregister_driver(devpath);
     }
diff --git a/fs/mount/fs_foreachmountpoint.c b/fs/mount/fs_foreachmountpoint.c
index 5880407cf6..2508d498ea 100644
--- a/fs/mount/fs_foreachmountpoint.c
+++ b/fs/mount/fs_foreachmountpoint.c
@@ -96,7 +96,7 @@ static int mountpoint_filter(FAR struct inode *node,
 
       /* Append the inode name to the directory path */
 
-      sprintf(&dirpath[pathlen], "/%s", node->i_name);
+      snprintf(&dirpath[pathlen], PATH_MAX - pathlen, "/%s", node->i_name);
 
       /* Get the status of the file system */
 
diff --git a/graphics/nxmu/nxmu_server.c b/graphics/nxmu/nxmu_server.c
index 984a4b04ed..9e6f59bd93 100644
--- a/graphics/nxmu/nxmu_server.c
+++ b/graphics/nxmu/nxmu_server.c
@@ -80,7 +80,7 @@ static inline void nxmu_connect(FAR struct nxmu_conn_s *conn)
 
   /* Create the client MQ name */
 
-  sprintf(mqname, NX_CLIENT_MQNAMEFMT, conn->cid);
+  snprintf(mqname, sizeof(mqname), NX_CLIENT_MQNAMEFMT, conn->cid);
 
   /* Open the client MQ -- this should have already been created by the
    * client
diff --git a/include/nuttx/wireless/bluetooth/bt_core.h b/include/nuttx/wireless/bluetooth/bt_core.h
index 5e71dc8a03..e13ef300fc 100644
--- a/include/nuttx/wireless/bluetooth/bt_core.h
+++ b/include/nuttx/wireless/bluetooth/bt_core.h
@@ -204,7 +204,7 @@ static inline int bt_addr_le_to_str(FAR const bt_addr_le_t *addr, char *str,
       break;
 
     default:
-      sprintf(type, "0x%02x", addr->type);
+      snprintf(type, sizeof(type), "0x%02x", addr->type);
       break;
   }
 
diff --git a/libs/libc/misc/lib_envpath.c b/libs/libc/misc/lib_envpath.c
index 0c4b3e7d81..73a4ed13ae 100644
--- a/libs/libc/misc/lib_envpath.c
+++ b/libs/libc/misc/lib_envpath.c
@@ -220,7 +220,7 @@ FAR char *envpath_next(ENVPATH_HANDLE handle, FAR const char *relpath)
 
       /* Construct the full path */
 
-      sprintf(fullpath, "%s/%s", path, relpath);
+      snprintf(fullpath, pathlen, "%s/%s", path, relpath);
 
       /* Verify that a regular file exists at this path */
 
diff --git a/libs/libnx/nxmu/nx_connect.c b/libs/libnx/nxmu/nx_connect.c
index 08762685e3..55c421b8d6 100644
--- a/libs/libnx/nxmu/nx_connect.c
+++ b/libs/libnx/nxmu/nx_connect.c
@@ -116,7 +116,7 @@ NXHANDLE nx_connectinstance(FAR const char *svrmqname)
   conn->cid = g_nxcid++;
   nxmutex_unlock(&g_nxliblock);
 
-  sprintf(climqname, NX_CLIENT_MQNAMEFMT, conn->cid);
+  snprintf(climqname, sizeof(climqname), NX_CLIENT_MQNAMEFMT, conn->cid);
 
   /* Open the client MQ for reading */
 
diff --git a/mm/mempool/mempool.c b/mm/mempool/mempool.c
index c0dc04e7d6..7374dbb131 100644
--- a/mm/mempool/mempool.c
+++ b/mm/mempool/mempool.c
@@ -503,8 +503,9 @@ void mempool_memdump(FAR struct mempool_s *pool, pid_t pid)
 #  if CONFIG_MM_BACKTRACE > 0
               for (i = 0; i < CONFIG_MM_BACKTRACE && buf->backtrace[i]; i++)
                 {
-                  sprintf(bt + i * MM_PTR_FMT_WIDTH, format,
-                          MM_PTR_FMT_WIDTH - 1, buf->backtrace[i]);
+                  snprintf(bt + i * MM_PTR_FMT_WIDTH,
+                           sizeof(bt) - i * MM_PTR_FMT_WIDTH,
+                           format, MM_PTR_FMT_WIDTH - 1, buf->backtrace[i]);
                 }
 #  endif
 
diff --git a/mm/mm_heap/mm_memdump.c b/mm/mm_heap/mm_memdump.c
index 6abf0b3b52..feb87b5b92 100644
--- a/mm/mm_heap/mm_memdump.c
+++ b/mm/mm_heap/mm_memdump.c
@@ -80,8 +80,9 @@ static void memdump_handler(FAR struct mm_allocnode_s *node, FAR void *arg)
 #  if CONFIG_MM_BACKTRACE > 0
           for (i = 0; i < CONFIG_MM_BACKTRACE && node->backtrace[i]; i++)
             {
-              sprintf(buf + i * MM_PTR_FMT_WIDTH, format,
-                      MM_PTR_FMT_WIDTH - 1, node->backtrace[i]);
+              snprintf(buf + i * MM_PTR_FMT_WIDTH,
+                       sizeof(buf) - i * MM_PTR_FMT_WIDTH,
+                       format, MM_PTR_FMT_WIDTH - 1, node->backtrace[i]);
             }
 #  endif
 
diff --git a/mm/tlsf/mm_tlsf.c b/mm/tlsf/mm_tlsf.c
index ea63c7afd4..36059c17f3 100644
--- a/mm/tlsf/mm_tlsf.c
+++ b/mm/tlsf/mm_tlsf.c
@@ -422,8 +422,9 @@ static void memdump_handler(FAR void *ptr, size_t size, int used,
 #  if CONFIG_MM_BACKTRACE > 0
           for (i = 0; i < CONFIG_MM_BACKTRACE && dump->backtrace[i]; i++)
             {
-              sprintf(buf + i * MM_PTR_FMT_WIDTH, format,
-                      MM_PTR_FMT_WIDTH - 1, dump->backtrace[i]);
+              snprintf(buf + i * MM_PTR_FMT_WIDTH,
+                       sizeof(buf) - i * MM_PTR_FMT_WIDTH,
+                       format, MM_PTR_FMT_WIDTH - 1, dump->backtrace[i]);
             }
 #  endif
 
diff --git a/net/neighbor/neighbor_dumpentry.c b/net/neighbor/neighbor_dumpentry.c
index 25eeb8a7e2..495afa7767 100644
--- a/net/neighbor/neighbor_dumpentry.c
+++ b/net/neighbor/neighbor_dumpentry.c
@@ -67,11 +67,11 @@ static void neighbor_dump_address(FAR const void *buf, unsigned int buflen)
     {
       if (i == 0)
         {
-          sprintf(outbuf, "  at: ");
+          snprintf(outbuf, sizeof(outbuf), "  at: ");
         }
       else
         {
-          sprintf(outbuf, "      ");
+          snprintf(outbuf, sizeof(outbuf), "      ");
         }
 
       maxj = 16;
@@ -89,7 +89,7 @@ static void neighbor_dump_address(FAR const void *buf, unsigned int buflen)
               *ptr++ = ' ';
             }
 
-          sprintf(ptr, "%02x ", *buffer++);
+          snprintf(ptr, sizeof(outbuf) - (ptr - outbuf), "%02x ", *buffer++);
           ptr += 3;
         }
 
diff --git a/sched/environ/env_setenv.c b/sched/environ/env_setenv.c
index e4a0b12c8e..bc5850dd0c 100644
--- a/sched/environ/env_setenv.c
+++ b/sched/environ/env_setenv.c
@@ -184,7 +184,7 @@ int setenv(FAR const char *name, FAR const char *value, int overwrite)
 
   /* Now, put the new name=value string into the environment buffer */
 
-  sprintf(pvar, "%s=%s", name, value);
+  snprintf(pvar, varlen, "%s=%s", name, value);
   sched_unlock();
   return OK;
 


[nuttx] 01/06: fs/vfs: Add a new argument(size_t len) to inode_getpath

Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jerpelea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 08ababd7044c5e29ac1a943140ec74c8a2a55f62
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sun Mar 5 21:13:32 2023 +0800

    fs/vfs: Add a new argument(size_t len) to inode_getpath
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 fs/binfs/fs_binfs.c        | 5 +++--
 fs/inode/fs_inodegetpath.c | 8 ++++----
 fs/inode/inode.h           | 2 +-
 fs/romfs/fs_romfs.c        | 4 ++--
 fs/vfs/fs_dir.c            | 2 +-
 fs/vfs/fs_ioctl.c          | 2 +-
 6 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/fs/binfs/fs_binfs.c b/fs/binfs/fs_binfs.c
index 1fe2fa7c8b..92e7dc3bbe 100644
--- a/fs/binfs/fs_binfs.c
+++ b/fs/binfs/fs_binfs.c
@@ -224,13 +224,14 @@ static int binfs_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
         }
       else
         {
-          ret = inode_getpath(filep->f_inode, ptr);
+          ret = inode_getpath(filep->f_inode, ptr, PATH_MAX);
           if (ret < 0)
             {
               return ret;
             }
 
-          strcat(ptr, builtin_getname((int)((uintptr_t)filep->f_priv)));
+          strlcat(ptr, builtin_getname((int)((uintptr_t)filep->f_priv)),
+                  PATH_MAX);
         }
     }
   else
diff --git a/fs/inode/fs_inodegetpath.c b/fs/inode/fs_inodegetpath.c
index f3b7b966c1..e0b3572efd 100644
--- a/fs/inode/fs_inodegetpath.c
+++ b/fs/inode/fs_inodegetpath.c
@@ -42,7 +42,7 @@
  *
  ****************************************************************************/
 
-int inode_getpath(FAR struct inode *node, FAR char *path)
+int inode_getpath(FAR struct inode *node, FAR char *path, size_t len)
 {
   if (path == NULL)
     {
@@ -55,17 +55,17 @@ int inode_getpath(FAR struct inode *node, FAR char *path)
     }
   else
     {
-      int ret = inode_getpath(node->i_parent, path);
+      int ret = inode_getpath(node->i_parent, path, len);
       if (ret < 0)
         {
           return ret;
         }
     }
 
-  strcat(path, node->i_name);
+  strlcat(path, node->i_name, len);
   if (node->i_child || INODE_IS_MOUNTPT(node))
     {
-      strcat(path, "/");
+      strlcat(path, "/", len);
     }
 
   return OK;
diff --git a/fs/inode/inode.h b/fs/inode/inode.h
index 050b10975f..f5f8727be6 100644
--- a/fs/inode/inode.h
+++ b/fs/inode/inode.h
@@ -279,7 +279,7 @@ int inode_chstat(FAR struct inode *inode,
  *
  ****************************************************************************/
 
-int inode_getpath(FAR struct inode *node, FAR char *path);
+int inode_getpath(FAR struct inode *node, FAR char *path, size_t len);
 
 /****************************************************************************
  * Name: inode_free
diff --git a/fs/romfs/fs_romfs.c b/fs/romfs/fs_romfs.c
index ad72d82ea1..eda870dc04 100644
--- a/fs/romfs/fs_romfs.c
+++ b/fs/romfs/fs_romfs.c
@@ -599,8 +599,8 @@ static int romfs_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
   if (cmd == FIOC_FILEPATH)
     {
       FAR char *ptr = (FAR char *)((uintptr_t)arg);
-      inode_getpath(filep->f_inode, ptr);
-      strcat(ptr, rf->rf_path);
+      inode_getpath(filep->f_inode, ptr, PATH_MAX);
+      strlcat(ptr, rf->rf_path, PATH_MAX);
       return OK;
     }
 
diff --git a/fs/vfs/fs_dir.c b/fs/vfs/fs_dir.c
index 8e4d6a6766..eeb8415114 100644
--- a/fs/vfs/fs_dir.c
+++ b/fs/vfs/fs_dir.c
@@ -599,7 +599,7 @@ int dir_allocate(FAR struct file *filep, FAR const char *relpath)
         }
     }
 
-  inode_getpath(inode, path_prefix);
+  inode_getpath(inode, path_prefix, sizeof(path_prefix));
   ret = asprintf(&dir->fd_path, "%s%s/", path_prefix, relpath);
   if (ret < 0)
     {
diff --git a/fs/vfs/fs_ioctl.c b/fs/vfs/fs_ioctl.c
index f952733a39..2fcf0e0124 100644
--- a/fs/vfs/fs_ioctl.c
+++ b/fs/vfs/fs_ioctl.c
@@ -105,7 +105,7 @@ int file_vioctl(FAR struct file *filep, int req, va_list ap)
       case FIOC_FILEPATH:
         if (ret == -ENOTTY && !INODE_IS_MOUNTPT(inode))
           {
-            ret = inode_getpath(inode, (FAR char *)(uintptr_t)arg);
+            ret = inode_getpath(inode, (FAR char *)(uintptr_t)arg, PATH_MAX);
           }
         break;
 


[nuttx] 05/06: Replace all strncpy with strlcpy

Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jerpelea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 325f39530034108cf3b5580f820069bb3423a56d
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Mon Mar 6 00:53:04 2023 +0800

    Replace all strncpy with strlcpy
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 arch/sim/src/sim/sim_rptun.c                       |  4 +-
 arch/xtensa/src/esp32/esp32_himem_chardev.c        |  2 +-
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_progmem.c |  3 +-
 .../arm/stm32h7/nucleo-h743zi/src/stm32_progmem.c  |  3 +-
 drivers/modem/alt1250/altcom_hdlr.c                | 49 +++++++++++-----------
 libs/libc/unistd/lib_swab.c                        |  2 +-
 sched/pthread/pthread_create.c                     |  3 +-
 7 files changed, 31 insertions(+), 35 deletions(-)

diff --git a/arch/sim/src/sim/sim_rptun.c b/arch/sim/src/sim/sim_rptun.c
index 8144b482a0..86d58d33da 100644
--- a/arch/sim/src/sim/sim_rptun.c
+++ b/arch/sim/src/sim/sim_rptun.c
@@ -262,8 +262,8 @@ int sim_rptun_init(const char *shmemname, const char *cpuname, bool master)
 
   dev->master = master;
   dev->rptun.ops = &g_sim_rptun_ops;
-  strncpy(dev->cpuname, cpuname, RPMSG_NAME_SIZE);
-  strncpy(dev->shmemname, shmemname, RPMSG_NAME_SIZE);
+  strlcpy(dev->cpuname, cpuname, RPMSG_NAME_SIZE);
+  strlcpy(dev->shmemname, shmemname, RPMSG_NAME_SIZE);
   list_add_tail(&g_dev_list, &dev->node);
 
   ret = rptun_initialize(&dev->rptun);
diff --git a/arch/xtensa/src/esp32/esp32_himem_chardev.c b/arch/xtensa/src/esp32/esp32_himem_chardev.c
index 6d2bdd82db..bb13583841 100644
--- a/arch/xtensa/src/esp32/esp32_himem_chardev.c
+++ b/arch/xtensa/src/esp32/esp32_himem_chardev.c
@@ -314,7 +314,7 @@ int himem_chardev_register(char *name, size_t size)
 
   dev->size = size;
 
-  strncpy(dev->name, name, 32);
+  strlcpy(dev->name, name, 32);
   ret = esp_himem_alloc(dev->size, &dev->mem_handle);
   if (ret != 0)
     {
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_progmem.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_progmem.c
index bd031ee979..8d8fd7f692 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_progmem.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_progmem.c
@@ -186,8 +186,7 @@ static int init_ota_partitions(void)
       const struct ota_partition_s *part = &g_ota_partition_table[i];
       mtd = progmem_alloc_mtdpart(part->offset, part->size);
 
-      strncpy(path, (char *)part->devpath, PARTITION_LABEL_LEN);
-      path[PARTITION_LABEL_LEN] = '\0';
+      strlcpy(path, (char *)part->devpath, PARTITION_LABEL_LEN);
 
       finfo("INFO: [label]:   %s\n", path);
       finfo("INFO: [offset]:  0x%08" PRIx32 "\n", part->offset);
diff --git a/boards/arm/stm32h7/nucleo-h743zi/src/stm32_progmem.c b/boards/arm/stm32h7/nucleo-h743zi/src/stm32_progmem.c
index 893da57f29..195608b26c 100644
--- a/boards/arm/stm32h7/nucleo-h743zi/src/stm32_progmem.c
+++ b/boards/arm/stm32h7/nucleo-h743zi/src/stm32_progmem.c
@@ -187,8 +187,7 @@ static int init_ota_partitions(void)
       const struct ota_partition_s *part = &g_ota_partition_table[i];
       mtd = progmem_alloc_mtdpart(part->offset, part->size);
 
-      strncpy(path, (char *)part->devpath, PARTITION_LABEL_LEN);
-      path[PARTITION_LABEL_LEN] = '\0';
+      strlcpy(path, (char *)part->devpath, PARTITION_LABEL_LEN);
 
       finfo("INFO: [label]:   %s\n", path);
       finfo("INFO: [offset]:  0x%08" PRIx32 "\n", part->offset);
diff --git a/drivers/modem/alt1250/altcom_hdlr.c b/drivers/modem/alt1250/altcom_hdlr.c
index 67201621c2..17ccfcb1bf 100644
--- a/drivers/modem/alt1250/altcom_hdlr.c
+++ b/drivers/modem/alt1250/altcom_hdlr.c
@@ -790,9 +790,9 @@ int32_t altcombs_set_pdninfo(struct apicmd_pdnset_s *cmd_pdn,
   for (i = 0; i < lte_pdn->ipaddr_num; i++)
     {
       lte_pdn->address[i].ip_type = cmd_pdn->ip_address[i].iptype;
-      strncpy(lte_pdn->address[i].address,
+      strlcpy(lte_pdn->address[i].address,
               (FAR char *)cmd_pdn->ip_address[i].address,
-              LTE_IPADDR_MAX_LEN - 1);
+              LTE_IPADDR_MAX_LEN);
     }
 
   lte_pdn->ims_register = cmd_pdn->imsregister == APICMD_PDN_IMS_REG ?
@@ -826,9 +826,9 @@ int32_t altcombs_set_pdninfo_v4(FAR struct apicmd_pdnset_v4_s *cmd_pdn,
   for (i = 0; i < lte_pdn->ipaddr_num; i++)
     {
       lte_pdn->address[i].ip_type = cmd_pdn->ip_address[i].iptype;
-      strncpy(lte_pdn->address[i].address,
+      strlcpy(lte_pdn->address[i].address,
               (FAR char *)cmd_pdn->ip_address[i].address,
-              LTE_IPADDR_MAX_LEN - 1);
+              LTE_IPADDR_MAX_LEN);
     }
 
   lte_pdn->ims_register = cmd_pdn->imsregister;
@@ -1420,10 +1420,10 @@ static void getver_parse_response(FAR struct apicmd_cmddat_getverres_s *resp,
                                   FAR lte_version_t *version)
 {
   memset(version, 0, sizeof(*version));
-  strncpy(version->bb_product,
-          (FAR const char *)resp->bb_product, LTE_VER_BB_PRODUCT_LEN - 1);
-  strncpy(version->np_package,
-          (FAR const char *)resp->np_package, LTE_VER_NP_PACKAGE_LEN - 1);
+  strlcpy(version->bb_product,
+          (FAR const char *)resp->bb_product, LTE_VER_BB_PRODUCT_LEN);
+  strlcpy(version->np_package,
+          (FAR const char *)resp->np_package, LTE_VER_NP_PACKAGE_LEN);
 }
 
 static void getpinset_parse_response(
@@ -1822,7 +1822,7 @@ static int copy_logfilename(FAR char *filename, size_t fnamelen,
 
       if (pathlen <= fnamelen)
         {
-          strncpy(filename, path, fnamelen);
+          strlcpy(filename, path, fnamelen);
         }
       else
         {
@@ -1977,7 +1977,7 @@ static int32_t setpinlock_pkt_compose(FAR void **arg,
     (FAR struct apicmd_cmddat_setpinlock_s *)pktbuf;
 
   out->mode = *enable;
-  strncpy((FAR char *)out->pincode, pincode, sizeof(out->pincode));
+  strlcpy((FAR char *)out->pincode, pincode, sizeof(out->pincode));
 
   size = sizeof(struct apicmd_cmddat_setpinlock_s);
 
@@ -2018,9 +2018,8 @@ static int32_t setpincode_pkt_compose(FAR void **arg,
       out->chgtype = APICMD_SETPINCODE_CHGTYPE_PIN2;
     }
 
-  strncpy((FAR char *)out->pincode, pincode, sizeof(out->pincode));
-
-  strncpy((FAR char *)out->newpincode, new_pincode, sizeof(out->newpincode));
+  strlcpy((FAR char *)out->pincode, pincode, sizeof(out->pincode));
+  strlcpy((FAR char *)out->newpincode, new_pincode, sizeof(out->newpincode));
 
   size = sizeof(struct apicmd_cmddat_setpincode_s);
 
@@ -2051,11 +2050,11 @@ static int32_t enterpin_pkt_compose(FAR void **arg,
   FAR struct apicmd_cmddat_enterpin_s *out =
     (FAR struct apicmd_cmddat_enterpin_s *)pktbuf;
 
-  strncpy((FAR char *)out->pincode, pincode, sizeof(out->pincode));
+  strlcpy((FAR char *)out->pincode, pincode, sizeof(out->pincode));
   if (new_pincode)
     {
       out->newpincodeuse = APICMD_ENTERPIN_NEWPINCODE_USE;
-      strncpy((FAR char *)out->newpincode,
+      strlcpy((FAR char *)out->newpincode,
               new_pincode, sizeof(out->newpincode));
     }
   else
@@ -2531,14 +2530,14 @@ static int32_t actpdn_pkt_compose(FAR void **arg,
   out->iptype  = apn->ip_type;
   out->authtype  = apn->auth_type;
 
-  strncpy((FAR char *)out->apnname, (FAR const char *)apn->apn,
+  strlcpy((FAR char *)out->apnname, (FAR const char *)apn->apn,
     sizeof(out->apnname));
   if (apn->auth_type != LTE_APN_AUTHTYPE_NONE)
     {
-      strncpy((FAR char *)out->username, (FAR const char *)apn->user_name,
-        sizeof(out->username));
-      strncpy((FAR char *)out->password, (FAR const char *)apn->password,
-        sizeof(out->password));
+      strlcpy((FAR char *)out->username, (FAR const char *)apn->user_name,
+              sizeof(out->username));
+      strlcpy((FAR char *)out->password, (FAR const char *)apn->password,
+              sizeof(out->password));
     }
 
   size = sizeof(struct apicmd_cmddat_activatepdn_s);
@@ -4248,7 +4247,7 @@ static int32_t getphone_pkt_parse(FAR struct alt1250_dev_s *dev,
             }
         }
 
-      strncpy(phoneno, (FAR const char *)in->phoneno, LTE_PHONENO_LEN);
+      strlcpy(phoneno, (FAR const char *)in->phoneno, LTE_PHONENO_LEN);
     }
 
   return 0;
@@ -4285,7 +4284,7 @@ static int32_t getimsi_pkt_parse(FAR struct alt1250_dev_s *dev,
             }
         }
 
-      strncpy(imsi, (FAR const char *)in->imsi, APICMD_IMSI_LEN);
+      strlcpy(imsi, (FAR const char *)in->imsi, APICMD_IMSI_LEN);
     }
 
   return 0;
@@ -4319,7 +4318,7 @@ static int32_t getimei_pkt_parse(FAR struct alt1250_dev_s *dev,
             }
         }
 
-      strncpy(imei, (FAR const char *)in->imei, LTE_IMEI_LEN);
+      strlcpy(imei, (FAR const char *)in->imei, LTE_IMEI_LEN);
     }
 
   return 0;
@@ -4455,7 +4454,7 @@ static int32_t getoper_pkt_parse(FAR struct alt1250_dev_s *dev,
                 }
             }
 
-          strncpy(oper, (FAR const char *)in->oper, LTE_OPERATOR_LEN);
+          strlcpy(oper, (FAR const char *)in->oper, LTE_OPERATOR_LEN);
         }
     }
   else if (altver == ALTCOM_VER4)
@@ -4482,7 +4481,7 @@ static int32_t getoper_pkt_parse(FAR struct alt1250_dev_s *dev,
                 }
             }
 
-          strncpy(oper, (FAR const char *)in->oper, LTE_OPERATOR_LEN);
+          strlcpy(oper, (FAR const char *)in->oper, LTE_OPERATOR_LEN);
         }
     }
 
diff --git a/libs/libc/unistd/lib_swab.c b/libs/libc/unistd/lib_swab.c
index fea94d434c..2f183ff978 100644
--- a/libs/libc/unistd/lib_swab.c
+++ b/libs/libc/unistd/lib_swab.c
@@ -33,7 +33,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- * Name: strncpy
+ * Name: swab
  *
  * Description:
  *   The swab() function will copy nbytes bytes, which are pointed to by
diff --git a/sched/pthread/pthread_create.c b/sched/pthread/pthread_create.c
index 74b8788f01..14ce51ba1f 100644
--- a/sched/pthread/pthread_create.c
+++ b/sched/pthread/pthread_create.c
@@ -92,8 +92,7 @@ static inline void pthread_tcb_setup(FAR struct pthread_tcb_s *ptcb,
 #if CONFIG_TASK_NAME_SIZE > 0
   /* Copy the pthread name into the TCB */
 
-  strncpy(ptcb->cmn.name, parent->name, CONFIG_TASK_NAME_SIZE);
-  ptcb->cmn.name[CONFIG_TASK_NAME_SIZE] = '\0';
+  strlcpy(ptcb->cmn.name, parent->name, CONFIG_TASK_NAME_SIZE);
 #endif /* CONFIG_TASK_NAME_SIZE */
 
   /* For pthreads, args are strictly pass-by-value; that actual


[nuttx] 06/06: fs: Replace strncat with strlcat

Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jerpelea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 1955992ae5cd1894c78398e1206bacd7dc2a1e49
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Mon Mar 6 01:35:34 2023 +0800

    fs: Replace strncat with strlcat
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 fs/hostfs/hostfs.c   | 2 +-
 fs/rpmsgfs/rpmsgfs.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/hostfs/hostfs.c b/fs/hostfs/hostfs.c
index f250f3d989..f7c4a70886 100644
--- a/fs/hostfs/hostfs.c
+++ b/fs/hostfs/hostfs.c
@@ -228,7 +228,7 @@ static void hostfs_mkpath(FAR struct hostfs_mountpt_s  *fs,
 
   if (depth >= 0)
     {
-      strncat(path, &relpath[first], pathlen - strlen(path) - 1);
+      strlcat(path, &relpath[first], pathlen - strlen(path));
     }
 }
 
diff --git a/fs/rpmsgfs/rpmsgfs.c b/fs/rpmsgfs/rpmsgfs.c
index c8b8d048b2..d46a2c0e84 100644
--- a/fs/rpmsgfs/rpmsgfs.c
+++ b/fs/rpmsgfs/rpmsgfs.c
@@ -247,7 +247,7 @@ static void rpmsgfs_mkpath(FAR struct rpmsgfs_mountpt_s *fs,
 
   if (depth >= 0)
     {
-      strncat(path, &relpath[first], pathlen - strlen(path) - 1);
+      strlcat(path, &relpath[first], pathlen - strlen(path));
     }
 
   while (fs->timeout > 0)


[nuttx] 02/06: libc: Add a new argument(size_t fulllen) to lib_getfullpath

Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jerpelea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit 6354a742f1b87d51a922eaae57ccca091d9f106c
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sun Mar 5 22:39:02 2023 +0800

    libc: Add a new argument(size_t fulllen) to lib_getfullpath
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 libs/libc/libc.h                  | 3 ++-
 libs/libc/misc/lib_fchmodat.c     | 2 +-
 libs/libc/misc/lib_fstatat.c      | 2 +-
 libs/libc/misc/lib_getfullpath.c  | 9 +++++----
 libs/libc/misc/lib_mkdirat.c      | 2 +-
 libs/libc/misc/lib_mkfifo.c       | 2 +-
 libs/libc/misc/lib_mknod.c        | 2 +-
 libs/libc/misc/lib_openat.c       | 2 +-
 libs/libc/misc/lib_utimensat.c    | 2 +-
 libs/libc/stdio/lib_renameat.c    | 6 ++++--
 libs/libc/unistd/lib_access.c     | 2 +-
 libs/libc/unistd/lib_fchownat.c   | 2 +-
 libs/libc/unistd/lib_linkat.c     | 6 ++++--
 libs/libc/unistd/lib_readlinkat.c | 2 +-
 libs/libc/unistd/lib_symlinkat.c  | 2 +-
 libs/libc/unistd/lib_unlinkat.c   | 2 +-
 libs/libc/unistd/lib_utimes.c     | 2 +-
 17 files changed, 28 insertions(+), 22 deletions(-)

diff --git a/libs/libc/libc.h b/libs/libc/libc.h
index 7a81e44549..897e1f7df3 100644
--- a/libs/libc/libc.h
+++ b/libs/libc/libc.h
@@ -83,7 +83,8 @@ FAR char *__dtoa(double d, int mode, int ndigits, FAR int *decpt,
 
 /* Defined in lib_getfullpath.c */
 
-int lib_getfullpath(int dirfd, FAR const char *path, FAR char *fullpath);
+int lib_getfullpath(int dirfd, FAR const char *path,
+                    FAR char *fullpath, size_t fulllen);
 
 /* Defined in lib_fopen.c */
 
diff --git a/libs/libc/misc/lib_fchmodat.c b/libs/libc/misc/lib_fchmodat.c
index 7ebb47c966..c2a96817fb 100644
--- a/libs/libc/misc/lib_fchmodat.c
+++ b/libs/libc/misc/lib_fchmodat.c
@@ -67,7 +67,7 @@ int fchmodat(int dirfd, FAR const char *path, mode_t mode, int flags)
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/misc/lib_fstatat.c b/libs/libc/misc/lib_fstatat.c
index af64110f3d..99003aa4bb 100644
--- a/libs/libc/misc/lib_fstatat.c
+++ b/libs/libc/misc/lib_fstatat.c
@@ -68,7 +68,7 @@ int fstatat(int dirfd, FAR const char *path, FAR struct stat *buf,
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/misc/lib_getfullpath.c b/libs/libc/misc/lib_getfullpath.c
index 1cd454c38e..7e457c71a8 100644
--- a/libs/libc/misc/lib_getfullpath.c
+++ b/libs/libc/misc/lib_getfullpath.c
@@ -42,7 +42,8 @@
  *
  ****************************************************************************/
 
-int lib_getfullpath(int dirfd, FAR const char *path, FAR char *fullpath)
+int lib_getfullpath(int dirfd, FAR const char *path,
+                    FAR char *fullpath, size_t fulllen)
 {
   if (path == NULL || fullpath == NULL)
     {
@@ -52,7 +53,7 @@ int lib_getfullpath(int dirfd, FAR const char *path, FAR char *fullpath)
     {
       /* The path is absolute, then dirfd is ignored. */
 
-      strlcpy(fullpath, path, PATH_MAX);
+      strlcpy(fullpath, path, fulllen);
       return 0;
     }
 
@@ -73,7 +74,7 @@ int lib_getfullpath(int dirfd, FAR const char *path, FAR char *fullpath)
         }
 #endif
 
-      sprintf(fullpath, "%s/%s", pwd, path);
+      snprintf(fullpath, fulllen, "%s/%s", pwd, path);
       return 0;
     }
   else
@@ -85,7 +86,7 @@ int lib_getfullpath(int dirfd, FAR const char *path, FAR char *fullpath)
       ret = fcntl(dirfd, F_GETPATH, fullpath);
       if (ret >= 0)
         {
-          strlcat(fullpath, path, PATH_MAX);
+          strlcat(fullpath, path, fulllen);
         }
 
       return 0;
diff --git a/libs/libc/misc/lib_mkdirat.c b/libs/libc/misc/lib_mkdirat.c
index 9932f900ee..db99dbdb66 100644
--- a/libs/libc/misc/lib_mkdirat.c
+++ b/libs/libc/misc/lib_mkdirat.c
@@ -65,7 +65,7 @@ int mkdirat(int dirfd, FAR const char *path, mode_t mode)
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/misc/lib_mkfifo.c b/libs/libc/misc/lib_mkfifo.c
index 5999fb39f4..bbe3551ef0 100644
--- a/libs/libc/misc/lib_mkfifo.c
+++ b/libs/libc/misc/lib_mkfifo.c
@@ -115,7 +115,7 @@ int mkfifoat(int dirfd, FAR const char *path, mode_t mode)
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/misc/lib_mknod.c b/libs/libc/misc/lib_mknod.c
index 205300a91b..c4a3bb859f 100644
--- a/libs/libc/misc/lib_mknod.c
+++ b/libs/libc/misc/lib_mknod.c
@@ -135,7 +135,7 @@ int mknodat(int dirfd, FAR const char *path, mode_t mode, dev_t dev)
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/misc/lib_openat.c b/libs/libc/misc/lib_openat.c
index 20be9bb916..9ce18d7350 100644
--- a/libs/libc/misc/lib_openat.c
+++ b/libs/libc/misc/lib_openat.c
@@ -67,7 +67,7 @@ int openat(int dirfd, FAR const char *path, int oflags, ...)
   mode_t mode = 0;
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/misc/lib_utimensat.c b/libs/libc/misc/lib_utimensat.c
index 2fed37d87f..989bd8ea94 100644
--- a/libs/libc/misc/lib_utimensat.c
+++ b/libs/libc/misc/lib_utimensat.c
@@ -67,7 +67,7 @@ int utimensat(int dirfd, FAR const char *path,
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/stdio/lib_renameat.c b/libs/libc/stdio/lib_renameat.c
index 12bd24cd41..99abe268a6 100644
--- a/libs/libc/stdio/lib_renameat.c
+++ b/libs/libc/stdio/lib_renameat.c
@@ -72,10 +72,12 @@ int renameat(int olddirfd, FAR const char *oldpath,
   char newfullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(olddirfd, oldpath, oldfullpath);
+  ret = lib_getfullpath(olddirfd, oldpath,
+                        oldfullpath, sizeof(oldfullpath));
   if (ret >= 0)
     {
-      ret = lib_getfullpath(newdirfd, newpath, newfullpath);
+      ret = lib_getfullpath(newdirfd, newpath,
+                            newfullpath, sizeof(newfullpath));
     }
 
   if (ret < 0)
diff --git a/libs/libc/unistd/lib_access.c b/libs/libc/unistd/lib_access.c
index da35dbc992..d35abcdcac 100644
--- a/libs/libc/unistd/lib_access.c
+++ b/libs/libc/unistd/lib_access.c
@@ -138,7 +138,7 @@ int faccessat(int dirfd, FAR const char *path, int amode, int flags)
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/unistd/lib_fchownat.c b/libs/libc/unistd/lib_fchownat.c
index db3b26c91a..a140c669de 100644
--- a/libs/libc/unistd/lib_fchownat.c
+++ b/libs/libc/unistd/lib_fchownat.c
@@ -69,7 +69,7 @@ int fchownat(int dirfd, FAR const char *path, uid_t owner,
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/unistd/lib_linkat.c b/libs/libc/unistd/lib_linkat.c
index 4c2a8530cc..f0b252095f 100644
--- a/libs/libc/unistd/lib_linkat.c
+++ b/libs/libc/unistd/lib_linkat.c
@@ -80,10 +80,12 @@ int linkat(int olddirfd, FAR const char *path1,
   char newfullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(olddirfd, path1, oldfullpath);
+  ret = lib_getfullpath(olddirfd, path1,
+                        oldfullpath, sizeof(oldfullpath));
   if (ret >= 0)
     {
-      ret = lib_getfullpath(newdirfd, path2, newfullpath);
+      ret = lib_getfullpath(newdirfd, path2,
+                            newfullpath, sizeof(newfullpath));
     }
 
   if (ret < 0)
diff --git a/libs/libc/unistd/lib_readlinkat.c b/libs/libc/unistd/lib_readlinkat.c
index fe911dd619..85e863b9aa 100644
--- a/libs/libc/unistd/lib_readlinkat.c
+++ b/libs/libc/unistd/lib_readlinkat.c
@@ -71,7 +71,7 @@ ssize_t readlinkat(int dirfd, FAR const char *path, FAR char *buf,
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/unistd/lib_symlinkat.c b/libs/libc/unistd/lib_symlinkat.c
index 33d6698eed..6a6d6ee9c1 100644
--- a/libs/libc/unistd/lib_symlinkat.c
+++ b/libs/libc/unistd/lib_symlinkat.c
@@ -68,7 +68,7 @@ int symlinkat(FAR const char *path1, int dirfd, FAR const char *path2)
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path2, fullpath);
+  ret = lib_getfullpath(dirfd, path2, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/unistd/lib_unlinkat.c b/libs/libc/unistd/lib_unlinkat.c
index 4ceb3c8950..cde938743b 100644
--- a/libs/libc/unistd/lib_unlinkat.c
+++ b/libs/libc/unistd/lib_unlinkat.c
@@ -69,7 +69,7 @@ int unlinkat(int dirfd, FAR const char *path, int flags)
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);
diff --git a/libs/libc/unistd/lib_utimes.c b/libs/libc/unistd/lib_utimes.c
index d115aec7c5..16e2945117 100644
--- a/libs/libc/unistd/lib_utimes.c
+++ b/libs/libc/unistd/lib_utimes.c
@@ -54,7 +54,7 @@ int futimesat(int dirfd, FAR const char *path, const struct timeval tv[2])
   char fullpath[PATH_MAX];
   int ret;
 
-  ret = lib_getfullpath(dirfd, path, fullpath);
+  ret = lib_getfullpath(dirfd, path, fullpath, sizeof(fullpath));
   if (ret < 0)
     {
       set_errno(-ret);


[nuttx] 03/06: Replace all strcat with strlcat

Posted by je...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jerpelea pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit fa8719bb5a0e1ce37c1d1398faf5be02362a45c1
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sun Mar 5 21:48:08 2023 +0800

    Replace all strcat with strlcat
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 drivers/video/max7456.c | 4 ++--
 fs/hostfs/hostfs.c      | 4 ++--
 fs/rpmsgfs/rpmsgfs.c    | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/video/max7456.c b/drivers/video/max7456.c
index 518d558351..66ba212700 100644
--- a/drivers/video/max7456.c
+++ b/drivers/video/max7456.c
@@ -1554,11 +1554,11 @@ static int add_interface(FAR const char *path,
     {
       /* Convert @path to a directory name. */
 
-      strcat(buf, "/");
+      strlcat(buf, "/", sizeof(buf));
 
       /* Append the real interface name. */
 
-      strcat(buf, name);
+      strlcat(buf, name, sizeof(buf));
     }
 
   /* Register the interface in the usual way. NuttX will build the
diff --git a/fs/hostfs/hostfs.c b/fs/hostfs/hostfs.c
index 8ee8aed21f..f250f3d989 100644
--- a/fs/hostfs/hostfs.c
+++ b/fs/hostfs/hostfs.c
@@ -1002,7 +1002,7 @@ static int hostfs_rewinddir(FAR struct inode *mountpt,
 static int hostfs_bind(FAR struct inode *blkdriver, FAR const void *data,
                        FAR void **handle)
 {
-  FAR struct hostfs_mountpt_s  *fs;
+  FAR struct hostfs_mountpt_s *fs;
   FAR char *options;
   char *saveptr;
   char *ptr;
@@ -1080,7 +1080,7 @@ static int hostfs_bind(FAR struct inode *blkdriver, FAR const void *data,
 
   if (fs->fs_root[len - 1] != '/')
     {
-      strcat(fs->fs_root, "/");
+      strlcat(fs->fs_root, "/", sizeof(fs->fs_root));
     }
 
   *handle = (FAR void *)fs;
diff --git a/fs/rpmsgfs/rpmsgfs.c b/fs/rpmsgfs/rpmsgfs.c
index 71f1349f1c..c8b8d048b2 100644
--- a/fs/rpmsgfs/rpmsgfs.c
+++ b/fs/rpmsgfs/rpmsgfs.c
@@ -1140,7 +1140,7 @@ static int rpmsgfs_bind(FAR struct inode *blkdriver, FAR const void *data,
 
   if (fs->fs_root[len - 1] != '/')
     {
-      strcat(fs->fs_root, "/");
+      strlcat(fs->fs_root, "/", sizeof(fs->fs_root));
     }
 
   *handle = (FAR void *)fs;