summaryrefslogtreecommitdiffstats
path: root/avahi-common
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-08-25 23:16:36 +0000
committerLennart Poettering <lennart@poettering.net>2007-08-25 23:16:36 +0000
commitd32b1cf886980a6d8200d66895793081633cd596 (patch)
treef8f64492a2f3227f067f95c982cb8ecbbc1de553 /avahi-common
parentcf1f05215e3651ed47ea530edc7e924787de1bc6 (diff)
properly use va_copy() when iterating more than once through a va_list; fix bad memory access by one byte; closes #164; identified by QuLogic
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@1524 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
Diffstat (limited to 'avahi-common')
-rw-r--r--avahi-common/strlst.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/avahi-common/strlst.c b/avahi-common/strlst.c
index 9ffa18e..f8be273 100644
--- a/avahi-common/strlst.c
+++ b/avahi-common/strlst.c
@@ -337,8 +337,11 @@ AvahiStringList *avahi_string_list_add_vprintf(AvahiStringList *l, const char *f
for (;;) {
int n;
AvahiStringList *nr;
+ va_list va2;
- n = vsnprintf((char*) r->text, len+1, format, va);
+ va_copy(va2, va);
+ n = vsnprintf((char*) r->text, len, format, va2);
+ va_end(va2);
if (n >= 0 && n < (int) len)
break;
@@ -355,7 +358,6 @@ AvahiStringList *avahi_string_list_add_vprintf(AvahiStringList *l, const char *f
r = nr;
}
-
r->next = l;
r->size = strlen((char*) r->text);