--- /dev/null
+diff -ur e2fsprogs-1.39+1.40-WIP-2006.11.14+dfsg/lib/blkid/devname.c e2fsprogs-patched/lib/blkid/devname.c
+--- e2fsprogs-1.39+1.40-WIP-2006.11.14+dfsg/lib/blkid/devname.c 2006-09-12 07:25:40.000000000 +0200
++++ e2fsprogs-patched/lib/blkid/devname.c 2007-03-06 14:00:03.000000000 +0100
+@@ -305,6 +305,7 @@
+ probe_one(cache, device, dev, BLKID_PRI_DM, only_if_new);
+
+ try_next:
++ free(device);
+ next = names->next;
+ } while (next);
+
+diff -ur e2fsprogs-1.39+1.40-WIP-2006.11.14+dfsg/lib/blkid/probe.c e2fsprogs-patched/lib/blkid/probe.c
+--- e2fsprogs-1.39+1.40-WIP-2006.11.14+dfsg/lib/blkid/probe.c 2006-09-18 03:12:28.000000000 +0200
++++ e2fsprogs-patched/lib/blkid/probe.c 2007-03-06 13:55:19.000000000 +0100
+@@ -888,6 +888,10 @@
+ if (!dev->bid_type) {
+ if (probe.fd >= 0) close(probe.fd);
+ blkid_free_dev(dev);
++ if (probe.sbbuf)
++ free(probe.sbbuf);
++ if (probe.buf)
++ free(probe.buf);
+ return NULL;
+ }
+