aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-10-18 16:48:19 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2005-10-18 16:48:19 +0000
commit03ab01988899db3b0ca5b9342461f4040d384da1 (patch)
tree9652e2b485f1072d04745a8afdc89afa5e157e2a /apps
parentbe40e92107c4645f13a62ec42e0a554951e0c2a6 (diff)
Fix off-by-one issue with sort (bug #5459)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@6816 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'apps')
-rwxr-xr-xapps/app_cut.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/apps/app_cut.c b/apps/app_cut.c
index dd40bb4b0..9c0629adb 100755
--- a/apps/app_cut.c
+++ b/apps/app_cut.c
@@ -93,7 +93,7 @@ static int sort_subroutine(const void *arg1, const void *arg2)
static int sort_internal(struct ast_channel *chan, char *data, char *buffer, size_t buflen)
{
char *strings, *ptrkey, *ptrvalue;
- int count=1, count2;
+ int count=1, count2, element_count=0;
struct sortable_keys *sortable_keys;
memset(buffer, 0, buflen);
@@ -139,13 +139,13 @@ static int sort_internal(struct ast_channel *chan, char *data, char *buffer, siz
qsort(sortable_keys, count, sizeof(struct sortable_keys), sort_subroutine);
for (count2 = 0; count2 < count; count2++) {
- strncat(buffer + strlen(buffer), sortable_keys[count2].key, buflen - strlen(buffer));
- strncat(buffer + strlen(buffer), ",", buflen - strlen(buffer));
+ int blen = strlen(buffer);
+ if (element_count++) {
+ strncat(buffer + blen, ",", buflen - blen - 1);
+ }
+ strncat(buffer + blen + 1, sortable_keys[count2].key, buflen - blen - 2);
}
- /* Remove trailing comma */
- buffer[strlen(buffer) - 1] = '\0';
-
return 0;
}