-#include "wimlib_internal.h"
-#include "dentry.h"
-#include "lookup_table.h"
-
-static int verify_inode(struct wim_inode *inode, const WIMStruct *w)
-{
- const struct wim_lookup_table *table = w->lookup_table;
- const struct wim_security_data *sd = wim_const_security_data(w);
- const struct wim_dentry *first_dentry = inode_first_dentry(inode);
- int ret = WIMLIB_ERR_INVALID_DENTRY;
-
- /* Check the security ID */
- if (inode->i_security_id < -1) {
- ERROR("Dentry `%s' has an invalid security ID (%d)",
- first_dentry->full_path_utf8, inode->i_security_id);
- goto out;
- }
- if (inode->i_security_id >= sd->num_entries) {
- ERROR("Dentry `%s' has an invalid security ID (%d) "
- "(there are only %u entries in the security table)",
- first_dentry->full_path_utf8, inode->i_security_id,
- sd->num_entries);
- goto out;
- }
-
- /* Check that lookup table entries for all the resources exist, except
- * if the SHA1 message digest is all 0's, which indicates there is
- * intentionally no resource there. */
- if (w->hdr.total_parts == 1) {
- for (unsigned i = 0; i <= inode->i_num_ads; i++) {
- struct wim_lookup_table_entry *lte;
- const u8 *hash;
- hash = inode_stream_hash_unresolved(inode, i);
- lte = __lookup_resource(table, hash);
- if (!lte && !is_zero_hash(hash)) {
- ERROR("Could not find lookup table entry for stream "
- "%u of dentry `%s'", i, first_dentry->full_path_utf8);
- goto out;
- }
- if (lte)
- lte->real_refcnt += inode->i_nlink;
-
- /* The following is now done when required by
- * wim_run_full_verifications(). */
-
- #if 0
- if (lte && !w->full_verification_in_progress &&
- lte->real_refcnt > lte->refcnt)
- {
- #ifdef ENABLE_ERROR_MESSAGES
- WARNING("The following lookup table entry "
- "has a reference count of %u, but",
- lte->refcnt);
- WARNING("We found %u references to it",
- lte->real_refcnt);
- WARNING("(One dentry referencing it is at `%s')",
- first_dentry->full_path_utf8);