aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2008-07-21 14:23:43 +0000
committerMartin Willi <martin@strongswan.org>2008-07-21 14:23:43 +0000
commitee93541783f938d6fcebe14b08129dff642d2028 (patch)
tree419416c7e1bb5c444288fd14e81dcf4979fd513c
parentfb34475b5c175284b379e5616337ba0d42a25360 (diff)
downloadstrongswan-ee93541783f938d6fcebe14b08129dff642d2028.tar.bz2
strongswan-ee93541783f938d6fcebe14b08129dff642d2028.tar.xz
fixed bus args copy on non i386 archs
-rw-r--r--src/charon/bus/bus.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/charon/bus/bus.c b/src/charon/bus/bus.c
index 1f51045f3..c0803874d 100644
--- a/src/charon/bus/bus.c
+++ b/src/charon/bus/bus.c
@@ -284,13 +284,16 @@ typedef struct {
*/
static bool signal_cb(entry_t *entry, signal_data_t *data)
{
+ va_list args;
+
if (entry->calling)
{ /* avoid recursive calls */
return FALSE;
}
entry->calling = TRUE;
+ va_copy(args, data->args);
if (!entry->listener->signal(entry->listener, data->signal, data->level,
- data->thread, data->ike_sa, data->user, data->format, data->args))
+ data->thread, data->ike_sa, data->user, data->format, args))
{
if (entry->blocker)
{
@@ -301,9 +304,11 @@ static bool signal_cb(entry_t *entry, signal_data_t *data)
{
entry_destroy(entry);
}
+ va_end(args);
entry->calling = FALSE;
return TRUE;
}
+ va_end(args);
entry->calling = FALSE;
return FALSE;
}