aboutsummaryrefslogtreecommitdiff
path: root/tools/coccinelle
diff options
context:
space:
mode:
authorConrad Meyer <cem@FreeBSD.org>2020-05-11 22:57:21 +0000
committerConrad Meyer <cem@FreeBSD.org>2020-05-11 22:57:21 +0000
commit580744621f33383027108364dcadad718df46ffe (patch)
tree187024ccf9e3ec44b623ce2db3f6e2aac3f0887f /tools/coccinelle
parent294b75a880e20b6c9c198533bd421650e55fb651 (diff)
downloadsrc-580744621f33383027108364dcadad718df46ffe.tar.gz
src-580744621f33383027108364dcadad718df46ffe.zip
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);
+)