diff --git a/src/feature/rend/rendclient.c b/src/feature/rend/rendclient.c
index bc94c88efb5b40df37747a56e36a15891d7760c8..6f4ee8b8c15ed4ae28a163f16e77e355767e13a1 100644
--- a/src/feature/rend/rendclient.c
+++ b/src/feature/rend/rendclient.c
@@ -1058,6 +1058,7 @@ rend_client_get_random_intro_impl(const rend_cache_entry_t *entry,
   /* Get service ID so we can use it to query the failure cache. If we fail to
    * parse it, this cache entry is no good. */
   if (BUG(rend_get_service_id(entry->parsed->pk, service_id) < 0)) {
+    smartlist_free(usable_nodes);
     return NULL;
   }