aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/common/util.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/common/util.c b/src/common/util.c
index 16cc290a8e..ced770e577 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -167,7 +167,12 @@ char *tor_strndup(const char *s, size_t n) {
char *dup;
tor_assert(s);
dup = tor_malloc(n+1);
- strlcpy(dup, s, n+1);
+ /* Performance note: Ordinarly we prefer strlcpy to strncpy. But
+ * this function gets called a whole lot, and platform strncpy is
+ * much faster than strlcpy when strlen(s) is much longer than n.
+ */
+ strncpy(dup, s, n+1);
+ dup[n]='\0';
return dup;
}