From: Jinseok Kim <always.starving0@gmail.com>
To: andrea.cervesato@suse.com, chrubis@suse.cz
Cc: ltp@lists.linux.it
Subject: [LTP] [PATCH v2 1/2] inotify: replace strcpy() with snprintf()
Date: Sat, 14 Mar 2026 01:05:15 +0900 [thread overview]
Message-ID: <20260313160520.39745-1-always.starving0@gmail.com> (raw)
In-Reply-To: <69a70250.050a0220.3bc433.165d@mx.google.com>
Use snprintf() instead of strcpy() to avoid potential buffer
overflows when constructing file names.
Signed-off-by: Jinseok Kim <always.starving0@gmail.com>
---
testcases/kernel/syscalls/inotify/inotify02.c | 24 +++++++++----------
testcases/kernel/syscalls/inotify/inotify04.c | 10 ++++----
testcases/kernel/syscalls/inotify/inotify07.c | 8 +++----
testcases/kernel/syscalls/inotify/inotify10.c | 10 ++++----
4 files changed, 27 insertions(+), 25 deletions(-)
diff --git a/testcases/kernel/syscalls/inotify/inotify02.c b/testcases/kernel/syscalls/inotify/inotify02.c
index 314c1bd49..423676bf9 100644
--- a/testcases/kernel/syscalls/inotify/inotify02.c
+++ b/testcases/kernel/syscalls/inotify/inotify02.c
@@ -35,7 +35,7 @@
#define EVENT_BUF_LEN (EVENT_MAX * (EVENT_SIZE + 16))
#define BUF_SIZE 256
-static char fname1[BUF_SIZE], fname2[BUF_SIZE], fname3[BUF_SIZE];
+static char fname1[BUF_SIZE], fname2[BUF_SIZE+32], fname3[BUF_SIZE+32];
static int fd, fd_notify, reap_wd;
static int wd;
@@ -61,40 +61,40 @@ void verify_inotify(void)
*/
SAFE_CHMOD(".", 0755);
event_set[test_cnt].mask = IN_ISDIR | IN_ATTRIB;
- strcpy(event_set[test_cnt].name, "");
+ event_set[test_cnt].name[0] = '\0';
test_cnt++;
fd = SAFE_CREAT(FILE_NAME1, 0755);
event_set[test_cnt].mask = IN_CREATE;
- strcpy(event_set[test_cnt].name, FILE_NAME1);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME1);
test_cnt++;
event_set[test_cnt].mask = IN_OPEN;
- strcpy(event_set[test_cnt].name, FILE_NAME1);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME1);
test_cnt++;
SAFE_CLOSE(fd);
event_set[test_cnt].mask = IN_CLOSE_WRITE;
- strcpy(event_set[test_cnt].name, FILE_NAME1);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME1);
test_cnt++;
SAFE_RENAME(FILE_NAME1, FILE_NAME2);
event_set[test_cnt].mask = IN_MOVED_FROM;
- strcpy(event_set[test_cnt].name, FILE_NAME1);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME1);
test_cnt++;
event_set[test_cnt].mask = IN_MOVED_TO;
- strcpy(event_set[test_cnt].name, FILE_NAME2);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME2);
test_cnt++;
SAFE_GETCWD(fname1, BUF_SIZE);
- snprintf(fname2, BUF_SIZE, "%s.rename1", fname1);
+ snprintf(fname2, sizeof(fname2), "%s.rename1", fname1);
SAFE_RENAME(fname1, fname2);
event_set[test_cnt].mask = IN_MOVE_SELF;
- strcpy(event_set[test_cnt].name, "");
+ event_set[test_cnt].name[0] = '\0';
test_cnt++;
SAFE_UNLINK(FILE_NAME2);
event_set[test_cnt].mask = IN_DELETE;
- strcpy(event_set[test_cnt].name, FILE_NAME2);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME2);
test_cnt++;
/*
@@ -103,12 +103,12 @@ void verify_inotify(void)
* we can correct determine kernel bug which exist before
* 2.6.25. See comment below.
*/
- snprintf(fname3, BUF_SIZE, "%s.rename2", fname1);
+ snprintf(fname3, sizeof(fname3), "%s.rename2", fname1);
SAFE_RENAME(fname2, fname3);
SAFE_RENAME(fname3, fname1);
event_set[test_cnt].mask = IN_MOVE_SELF;
- strcpy(event_set[test_cnt].name, "");
+ event_set[test_cnt].name[0] = '\0';
test_cnt++;
int len, i = 0, test_num = 0;
diff --git a/testcases/kernel/syscalls/inotify/inotify04.c b/testcases/kernel/syscalls/inotify/inotify04.c
index 947623952..2d7f34bae 100644
--- a/testcases/kernel/syscalls/inotify/inotify04.c
+++ b/testcases/kernel/syscalls/inotify/inotify04.c
@@ -91,10 +91,10 @@ void verify_inotify(void)
reap_wd_dir = 0;
event_set[test_cnt].mask = IN_DELETE_SELF;
- strcpy(event_set[test_cnt].name, "");
+ event_set[test_cnt].name[0] = '\0';
test_cnt++;
event_set[test_cnt].mask = IN_IGNORED;
- strcpy(event_set[test_cnt].name, "");
+ event_set[test_cnt].name[0] = '\0';
test_cnt++;
SAFE_UNLINK(TEST_FILE);
@@ -108,14 +108,14 @@ void verify_inotify(void)
* understand how Unix works.
*/
event_set[test_cnt].mask = IN_ATTRIB;
- strcpy(event_set[test_cnt].name, "");
+ event_set[test_cnt].name[0] = '\0';
test_cnt++;
event_set[test_cnt].mask = IN_DELETE_SELF;
- strcpy(event_set[test_cnt].name, TEST_FILE);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", TEST_FILE);
test_cnt++;
event_set[test_cnt].mask = IN_IGNORED;
- strcpy(event_set[test_cnt].name, "");
+ event_set[test_cnt].name[0] = '\0';
test_cnt++;
len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN);
diff --git a/testcases/kernel/syscalls/inotify/inotify07.c b/testcases/kernel/syscalls/inotify/inotify07.c
index b4000f353..f0acd9e91 100644
--- a/testcases/kernel/syscalls/inotify/inotify07.c
+++ b/testcases/kernel/syscalls/inotify/inotify07.c
@@ -74,18 +74,18 @@ void verify_inotify(void)
*/
SAFE_CHMOD(DIR_PATH, 0755);
event_set[test_cnt].mask = IN_ISDIR | IN_ATTRIB;
- strcpy(event_set[test_cnt].name, "");
+ event_set[test_cnt].name[0] = '\0';
test_cnt++;
SAFE_TOUCH(FILE_PATH, 0644, NULL);
event_set[test_cnt].mask = IN_OPEN;
- strcpy(event_set[test_cnt].name, FILE_NAME);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME);
test_cnt++;
event_set[test_cnt].mask = IN_CLOSE_WRITE;
- strcpy(event_set[test_cnt].name, FILE_NAME);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME);
test_cnt++;
event_set[test_cnt].mask = IN_ATTRIB;
- strcpy(event_set[test_cnt].name, FILE_NAME);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name), "%s", FILE_NAME);
test_cnt++;
int len = SAFE_READ(0, fd_notify, event_buf, EVENT_BUF_LEN);
diff --git a/testcases/kernel/syscalls/inotify/inotify10.c b/testcases/kernel/syscalls/inotify/inotify10.c
index 4c3a1d116..0a94ead15 100644
--- a/testcases/kernel/syscalls/inotify/inotify10.c
+++ b/testcases/kernel/syscalls/inotify/inotify10.c
@@ -121,25 +121,27 @@ static void verify_inotify(unsigned int n)
if (wd_parent && (tc->parent_mask & IN_ATTRIB)) {
event_set[test_cnt].wd = wd_parent;
event_set[test_cnt].mask = tc->parent_mask | IN_ISDIR;
- strcpy(event_set[test_cnt].name, TEST_DIR);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name),
+ "%s", TEST_DIR);
test_cnt++;
}
if (wd_subdir && (tc->subdir_mask & IN_ATTRIB)) {
event_set[test_cnt].wd = wd_subdir;
event_set[test_cnt].mask = tc->subdir_mask | IN_ISDIR;
- strcpy(event_set[test_cnt].name, "");
+ event_set[test_cnt].name[0] = '\0';
test_cnt++;
}
if (wd_parent && (tc->parent_mask & IN_ATTRIB)) {
event_set[test_cnt].wd = wd_parent;
event_set[test_cnt].mask = tc->parent_mask;
- strcpy(event_set[test_cnt].name, TEST_FILE);
+ snprintf(event_set[test_cnt].name, sizeof(event_set[test_cnt].name),
+ "%s", TEST_FILE);
test_cnt++;
}
if (wd_child && (tc->child_mask & IN_ATTRIB)) {
event_set[test_cnt].wd = wd_child;
event_set[test_cnt].mask = tc->child_mask;
- strcpy(event_set[test_cnt].name, "");
+ event_set[test_cnt].name[0] = '\0';
test_cnt++;
}
--
2.43.0
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2026-03-13 16:06 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-01 16:57 [LTP] [PATCH] inotify: clean up build and make check findings Jinseok Kim
2026-03-03 15:46 ` Andrea Cervesato via ltp
2026-03-06 7:20 ` Jinseok Kim
2026-03-06 11:28 ` Cyril Hrubis
2026-03-09 14:48 ` Jinseok Kim
2026-03-13 16:05 ` Jinseok Kim [this message]
2026-03-13 16:05 ` [LTP] [PATCH v2 2/2] inotify: fix " Jinseok Kim
2026-03-16 12:31 ` Andrea Cervesato via ltp
2026-03-16 12:30 ` [LTP] [PATCH v2 1/2] inotify: replace strcpy() with snprintf() Andrea Cervesato via ltp
2026-03-16 15:44 ` [LTP] [PATCH v3] " Jinseok Kim
2026-03-17 9:39 ` Andrea Cervesato via ltp
2026-03-17 17:00 ` Jinseok Kim
2026-03-18 13:40 ` Andrea Cervesato via ltp
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260313160520.39745-1-always.starving0@gmail.com \
--to=always.starving0@gmail.com \
--cc=andrea.cervesato@suse.com \
--cc=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox