diff options
author | Josh Stone <jistone@redhat.com> | 2009-03-26 09:20:16 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-03-26 11:00:25 -0700 |
commit | 4aa2079a01a62ff27cbe90f5eca38137035d34a8 (patch) | |
tree | c7f58c68f248f1e0a86e483390ae7500c0462edb /runtime/map.c | |
parent | bc02f40984fede1c312ca33c0c3937b970e8da6d (diff) | |
download | systemtap-steved-4aa2079a01a62ff27cbe90f5eca38137035d34a8.tar.gz systemtap-steved-4aa2079a01a62ff27cbe90f5eca38137035d34a8.tar.xz systemtap-steved-4aa2079a01a62ff27cbe90f5eca38137035d34a8.zip |
PR10001: Use the kernel's strlcpy & strlcat
We had our own implementations of these which were triggering gcc
bug38480 in some particular cases. It's easier for us to use the
kernel's strlcpy and strlcat anyway, which avoids the bug.
Diffstat (limited to 'runtime/map.c')
-rw-r--r-- | runtime/map.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/runtime/map.c b/runtime/map.c index de25d6f3..190ba91b 100644 --- a/runtime/map.c +++ b/runtime/map.c @@ -38,27 +38,16 @@ static int int64_eq_p (int64_t key1, int64_t key2) static void str_copy(char *dest, char *src) { - int len = 0; - if (src) { - len = strlen(src); - if (len > MAP_STRING_LENGTH - 1) - len = MAP_STRING_LENGTH - 1; - memcpy (dest, src, len); - } - dest[len] = 0; + if (src) + strlcpy(dest, src, MAP_STRING_LENGTH); + else + *dest = 0; } static void str_add(void *dest, char *val) { char *dst = (char *)dest; - int len = strlen(val); - int len1 = strlen(dst); - int num = MAP_STRING_LENGTH - 1 - len1; - - if (len > num) - len = num; - memcpy (&dst[len1], val, len); - dst[len + len1] = 0; + strlcat(dst, val, MAP_STRING_LENGTH); } static int str_eq_p (char *key1, char *key2) |