The branch main has been updated by wulf:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=019391bf852771070cb739900f9e20ae6c41c746

commit 019391bf852771070cb739900f9e20ae6c41c746
Author:     Vladimir Kondratyev <w...@freebsd.org>
AuthorDate: 2021-07-05 00:20:42 +0000
Commit:     Vladimir Kondratyev <w...@freebsd.org>
CommitDate: 2021-07-05 00:20:42 +0000

    LinuxKPI: Implement strscpy
    
    strscpy copies the src string, or as much of it as fits, into the dst
    buffer.  The dst buffer is always NUL terminated, unless it's zero-sized.
    strscpy returns the number of characters copied (not including the
    trailing NUL) or -E2BIG if len is 0 or src was truncated.
    
    Currently drm-kmod replaces strscpy with strncpy that is not quite
    correct as strncpy does not NUL-terminate truncated strings and returns
    different values on exit.
    
    Reviewed by:    hselasky, imp, manu
    MFC after:      2 weeks
    Differential revision:  https://reviews.freebsd.org/D31005
---
 sys/compat/linuxkpi/common/include/linux/string.h | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/sys/compat/linuxkpi/common/include/linux/string.h 
b/sys/compat/linuxkpi/common/include/linux/string.h
index 39201e203162..659a48d93596 100644
--- a/sys/compat/linuxkpi/common/include/linux/string.h
+++ b/sys/compat/linuxkpi/common/include/linux/string.h
@@ -167,4 +167,20 @@ str_has_prefix(const char *str, const char *prefix)
        return (strncmp(str, prefix, len) == 0 ? len : 0);
 }
 
+static inline ssize_t
+strscpy(char* dst, const char* src, size_t len)
+{
+       size_t i;
+
+       if (len <= INT_MAX) {
+               for (i = 0; i < len; i++)
+                       if ('\0' == (dst[i] = src[i]))
+                               return ((ssize_t)i);
+               if (i != 0)
+                       dst[--i] = '\0';
+       }
+
+       return (-E2BIG);
+}
+
 #endif                                 /* _LINUX_STRING_H_ */
_______________________________________________
dev-commits-src-main@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "dev-commits-src-main-unsubscr...@freebsd.org"

Reply via email to