diff options
author | jim <jim@13f79535-47bb-0310-9956-ffa450edef68> | 2013-10-17 15:15:06 +0000 |
---|---|---|
committer | jim <jim@13f79535-47bb-0310-9956-ffa450edef68> | 2013-10-17 15:15:06 +0000 |
commit | dc1168de1629d0b4c984035e54de3f4ac7a46b17 (patch) | |
tree | 26c4d915ee531d109414ed502633018073bbce19 /strings | |
parent | c89d47544dd9916985862621dfd6167e3f42a707 (diff) | |
download | libapr-dc1168de1629d0b4c984035e54de3f4ac7a46b17.tar.gz |
Merge r1533104 from trunk:
it should really handle src==NULL
Reviewed/backported by: jim
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/branches/1.5.x@1533108 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'strings')
-rw-r--r-- | strings/apr_cpystrn.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/strings/apr_cpystrn.c b/strings/apr_cpystrn.c index 6311c29f3..d6c98f7e9 100644 --- a/strings/apr_cpystrn.c +++ b/strings/apr_cpystrn.c @@ -38,6 +38,7 @@ * (3) Instead of returning the pointer to the beginning of * the destination string, we return a pointer to the * terminating '\0' to allow us to "check" for truncation + * (4) If src is NULL, null terminate dst (empty string copy) * * apr_cpystrn() follows the same call structure as strncpy(). */ @@ -51,13 +52,15 @@ APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src, apr_size_t dst_size) return (dst); } - d = dst; - end = dst + dst_size - 1; + if (src) { + d = dst; + end = dst + dst_size - 1; - for (; d < end; ++d, ++src) { - if (!(*d = *src)) { - return (d); - } + for (; d < end; ++d, ++src) { + if (!(*d = *src)) { + return (d); + } + } } *d = '\0'; /* always null terminate */ |