From 343f16771aa9fa1f9c6e793dab84753aa8844052 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Sat, 25 Aug 2012 15:34:26 +0200 Subject: [PATCH] don't crash when select() on master fails synchronously svars->drv[S] would not be initialized yet, so cancel_sync() would crash. --- src/sync.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/sync.c b/src/sync.c index 1503cff..e7f0518 100644 --- a/src/sync.c +++ b/src/sync.c @@ -611,6 +611,10 @@ sync_boxes( store_t *ctx[], const char *names[], channel_conf_t *chan, ctx[t]->uidvalidity = -1; set_bad_callback( ctx[t], store_bad, AUX ); svars->drv[t] = ctx[t]->conf->driver; + } + /* Both boxes must be fully set up at this point, so that error exit paths + * don't run into uninitialized variables. */ + for (t = 0; t < 2; t++) { info( "Selecting %s %s...\n", str_ms[t], ctx[t]->name ); DRIVER_CALL(select( ctx[t], (chan->ops[t] & OP_CREATE) != 0, box_selected, AUX )); }