summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2012-09-07 23:10:05 +0000
committerRichard Mudgett <rmudgett@digium.com>2012-09-07 23:10:05 +0000
commite3156572878976bf2607d374449ca5c7dbbfb488 (patch)
treed26e37d2a664227db446355dec7e68a7b39d8fe3 /main
parent8b90b7a5654f86351a12ff0d4512cdd789d4ca3c (diff)
Fix MALLOC_DEBUG version of ast_strndup().
(closes issue ASTERISK-20349) Reported by: Brent Eagles ........ Merged revisions 372655 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 372656 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 372657 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@372658 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main')
-rw-r--r--main/astmm.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/main/astmm.c b/main/astmm.c
index 741358205..e469d60ad 100644
--- a/main/astmm.c
+++ b/main/astmm.c
@@ -272,16 +272,17 @@ char *__ast_strdup(const char *s, const char *file, int lineno, const char *func
char *__ast_strndup(const char *s, size_t n, const char *file, int lineno, const char *func)
{
size_t len;
- void *ptr;
+ char *ptr;
- if (!s)
+ if (!s) {
return NULL;
+ }
- len = strlen(s) + 1;
- if (len > n)
- len = n;
- if ((ptr = __ast_alloc_region(len, FUNC_STRNDUP, file, lineno, func, 0)))
- strcpy(ptr, s);
+ len = strnlen(s, n);
+ if ((ptr = __ast_alloc_region(len + 1, FUNC_STRNDUP, file, lineno, func, 0))) {
+ memcpy(ptr, s, len);
+ ptr[len] = '\0';
+ }
return ptr;
}