diff --git a/sbin/restore/restore.c b/sbin/restore/restore.c index 936d857d8b5..4da97f144a8 100644 --- a/sbin/restore/restore.c +++ b/sbin/restore/restore.c @@ -428,8 +428,12 @@ nodeupdates(name, ino, type) } if (ip->e_type == LEAF) { /* changing from leaf to node */ - removeleaf(ip); - freeentry(ip); + for (ip = lookupino(ino); ip != NULL; ip = ip->e_links) { + if (ip->e_type != LEAF) + badentry(ip, "NODE and LEAF links to same inode"); + removeleaf(ip); + freeentry(ip); + } ip = addentry(name, ino, type); newnode(ip); } else {