depot/third_party/nixpkgs/pkgs/applications/virtualization/virtualbox/guest-additions/strlcpy-1.patch

30 lines
1.3 KiB
Diff
Raw Normal View History

# https://www.virtualbox.org/changeset/102989/vbox
--- a/include/iprt/string.h
+++ b/include/iprt/string.h
@@ -244,4 +244,26 @@
#else /* !RT_OS_LINUX && !__KERNEL__ */
# define RT_BCOPY_UNFORTIFIED(a_pDst, a_pSrc, a_cbToCopy) memcpy((a_pDst), (a_pSrc), (a_cbToCopy))
+#endif /* !RT_OS_LINUX && !__KERNEL__ */
+
+/** @def RT_STRSCPY
+ * Copy string and NULL-terminate output buffer.
+ *
+ * This macro should mostly be used in Linux kernel code. This is
+ * the replacement for deprecated strlcpy. It was deprecated since 3.16.60
+ * when strscpy was introduced as an alternative. Finally, strlcpy was
+ * completely removed from kernel code in 6.8.0.
+ *
+ * @param a_pDst Pointer to the destination string buffer.
+ * @param a_pSrc Pointer to the source NULL-terminated string buffer.
+ * @param a_cbToCopy Size of destination buffer..
+ */
+#if defined(RT_OS_LINUX) && defined(__KERNEL__)
+# if (RTLNX_VER_MIN(3,16,60))
+# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy) strscpy((a_pDst), (a_pSrc), (a_cbToCopy))
+# else /* < 3.16.60 */
+# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy) strlcpy((a_pDst), (a_pSrc), (a_cbToCopy))
+# endif
+#else /* !RT_OS_LINUX && !__KERNEL__ */
+# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy) strscpy((a_pDst), (a_pSrc), (a_cbToCopy))
#endif /* !RT_OS_LINUX && !__KERNEL__ */