diff --git a/src/or/rendcommon.c b/src/or/rendcommon.c
index 8727a70c2ea43d93de5f405ee4911261df457fcb..e0c101e1ee27eed5200e5fd8bc4f2f5b99dc7360 100644
--- a/src/or/rendcommon.c
+++ b/src/or/rendcommon.c
@@ -1077,6 +1077,7 @@ rend_cache_store(const char *desc, size_t desc_len, int published,
     log_warn(LD_REND, "Received service descriptor for service ID %s; "
              "expected descriptor for service ID %s.",
              query, safe_str(service_id));
+    rend_service_descriptor_free(parsed);
     return -2;
   }
   now = time(NULL);