aboutsummaryrefslogtreecommitdiff
path: root/tools/coccinelle
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2020-05-25 16:40:48 +0000
committerConrad Meyer <cem@FreeBSD.org>2020-05-25 16:40:48 +0000
commit852c303b61d12d13b56ed7affe31df193aadf9ae (patch)
tree789bb0daba41ca856b37f87708652b4cfcc6403a /tools/coccinelle
parent9085d7d6b86a3435c92d8b817dcc6224ad3e6671 (diff)
Notes
Diffstat (limited to 'tools/coccinelle')
-rw-r--r--tools/coccinelle/copystr9.cocci39
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/coccinelle/copystr9.cocci b/tools/coccinelle/copystr9.cocci
new file mode 100644
index 000000000000..ac961406a456
--- /dev/null
+++ b/tools/coccinelle/copystr9.cocci
@@ -0,0 +1,39 @@
+@ nostorederror_nostoredlen @
+ expression __src, __dst, __len;
+ statement S1;
+@@
+
+ S1
+-copystr(__src, __dst, __len, NULL);
++strlcpy(__dst, __src, __len);
+
+@ ifcondition_nostoredlen @
+ expression __src, __dst, __len;
+ statement S1;
+@@
+ if (
+(
+-copystr(__src, __dst, __len, NULL) == ENAMETOOLONG
+|
+-copystr(__src, __dst, __len, NULL) != 0
+|
+-copystr(__src, __dst, __len, NULL)
+)
++strlcpy(__dst, __src, __len) >= __len
+ ) S1
+
+@ nostorederror_storedlen1 @
+ expression __src, __dst, __len;
+ identifier __done;
+ statement S1;
+@@
+ S1
+(
+-copystr(__src, __dst, __len, &__done);
++__done = strlcpy(__dst, __src, __len);
++__done = MIN(__done, __len);
+|
+-copystr(__src, __dst, __len, __done);
++ *__done = strlcpy(__dst, __src, __len);
++ *__done = MIN(*__done, __len);
+)