diff --git a/cli/btpd_if.c b/cli/btpd_if.c
index c328fb6..f33851f 100644
--- a/cli/btpd_if.c
+++ b/cli/btpd_if.c
@@ -154,6 +154,7 @@ parse_btstat(const uint8_t *res, struct btstat **out)
     int i = 0;
     for (const char *tp = benc_first(tlst); tp != NULL; tp = benc_next(tp)) {
         struct tpstat *ts = &st->torrents[i];
+        ts->hash = benc_dget_mema(tp, "hash", NULL);
         ts->name = benc_dget_str(tp, "path", NULL);
         ts->state = benc_dget_int(tp, "state");
         ts->errors = benc_dget_int(tp, "errors");
@@ -175,9 +176,12 @@ parse_btstat(const uint8_t *res, struct btstat **out)
 void
 free_btstat(struct btstat *st)
 {
-    for (unsigned i = 0; i < st->ntorrents; i++)
+    for (unsigned i = 0; i < st->ntorrents; i++) {
+        if (st->torrents[i].hash != NULL)
+            free(st->torrents[i].hash);
         if (st->torrents[i].name != NULL)
             free(st->torrents[i].name);
+    }
     free(st);
 }
 
diff --git a/cli/btpd_if.h b/cli/btpd_if.h
index 8c35cc7..b7096aa 100644
--- a/cli/btpd_if.h
+++ b/cli/btpd_if.h
@@ -19,6 +19,7 @@ enum ipc_code {
 struct btstat {
     unsigned ntorrents;
     struct tpstat {
+        uint8_t *hash;
         char *name;
         enum torrent_state state;