From: Nick Mathewson Date: Tue, 31 Jan 2017 19:44:14 +0000 (-0500) Subject: When marking guard state instances on a channel, don't mark NULL X-Git-Tag: tor-0.3.0.3-alpha~26^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35d827094237e92436ff28fffeb282ac83220839;p=thirdparty%2Ftor.git When marking guard state instances on a channel, don't mark NULL It's okay for guard_state to be null: we might have a fallback circuit, or we might not be using guards. Fixes bug 211228; bugfix on 0.3.0.1-alpha --- diff --git a/changes/bug21128 b/changes/bug21128 new file mode 100644 index 0000000000..972d2a2818 --- /dev/null +++ b/changes/bug21128 @@ -0,0 +1,5 @@ + o Minor bugfixes (client, entry guards): + - Fix a bug warning (with backtrace) when we fail a channel + that circuits to fallback directories on it. Fixes bug 21128; + bugfix on 0.3.0.1-alpha. + diff --git a/src/or/entrynodes.c b/src/or/entrynodes.c index c5fb92e35a..f9b3b60a6f 100644 --- a/src/or/entrynodes.c +++ b/src/or/entrynodes.c @@ -2172,7 +2172,11 @@ entry_guard_chan_failed(channel_t *chan) continue; origin_circuit_t *origin_circ = TO_ORIGIN_CIRCUIT(circ); - entry_guard_failed(&origin_circ->guard_state); + if (origin_circ->guard_state) { + /* We might have no guard state if we didn't use a guard on this + * circuit (eg it's for a fallback directory). */ + entry_guard_failed(&origin_circ->guard_state); + } } SMARTLIST_FOREACH_END(circ); smartlist_free(pending); }