DF-3223 / fix.diff
diff --git a/sys/vfs/hammer/hammer_prune.c b/b/sys/vfs/hammer/hammer_prune.c index 573f548..882d549 100644 --- a/sys/vfs/hammer/hammer_prune.c +++ b/sys/vfs/hammer/hammer_prune.c @@ -329,6 +329,13 @@ prune_check_nlinks(hammer_cursor_t cursor, hammer_btree_leaf_elm_t elm) return; if (hammer_btree_extract_data(cursor)) return; + /* + * A leaf record with data_offset == 0 (possible on a corrupted + * or forged filesystem image) extracts successfully with + * cursor->data left NULL by hammer_btree_extract(). + */ + if (cursor->data == NULL) + return; if (cursor->data->inode.nlinks) return; hammer_cursor_downgrade(cursor); |