aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mach/mig_strncpy.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/mach/mig_strncpy.c b/mach/mig_strncpy.c
index b0c001d775..dbd0a08e56 100644
--- a/mach/mig_strncpy.c
+++ b/mach/mig_strncpy.c
@@ -6,6 +6,14 @@
vm_size_t
__mig_strncpy (char *dst, const char *src, vm_size_t len)
{
- return __stpncpy (dst, src, len) - dst;
+ if (len == 0)
+ return 0;
+
+ char *end = __stpncpy (dst, src, len - 1);
+ vm_size_t ret = end - dst;
+ /* Null terminate the string. */
+ if (ret == len - 1)
+ *end = '\0';
+ return ret;
}
weak_alias (__mig_strncpy, mig_strncpy)