summaryrefslogtreecommitdiff
path: root/src/ntfsx.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ntfsx.c')
-rw-r--r--src/ntfsx.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/ntfsx.c b/src/ntfsx.c
index 60ddb66..6008e1a 100644
--- a/src/ntfsx.c
+++ b/src/ntfsx.c
@@ -299,7 +299,7 @@ ntfsx_attribute* ntfsx_attrib_enum_list(ntfsx_attrib_enum* attrenum, ntfsx_recor
/* If we're done */
if(attrenum->_flags & ATTR_ENUM_DONELIST)
return NULL;
-
+
cluster = ntfsx_record_cluster(record);
rechead = ntfsx_record_header(record);
@@ -323,10 +323,17 @@ ntfsx_attribute* ntfsx_attrib_enum_list(ntfsx_attrib_enum* attrenum, ntfsx_recor
attrenum->_flags |= ATTR_ENUM_DONELIST;
return NULL;
}
+
+ /* We don't do attribute lists when no MFT loaded */
+ if(!record->info->mftmap)
+ {
+ warnx("extended file attributes, but no MFT loaded. skipping");
+ attrenum->_flags |= ATTR_ENUM_DONELIST;
+ return NULL;
+ }
}
/* This has to be set by now */
- ASSERT(record->info->mftmap);
ASSERT(attrenum->_attrhead);
ASSERT(attrenum->_attrhead->type == kNTFS_ATTRIBUTE_LIST);
@@ -454,7 +461,10 @@ bool ntfsx_record_read(ntfsx_record* record, uint64 begSector, int dd)
ntfs_recordheader* rechead;
if(!ntfsx_cluster_read(&(record->_clus), record->info, begSector, dd))
- err(1, "couldn't read mft record from drive");
+ {
+ warn("couldn't read mft record from drive");
+ return false;
+ }
/* Check and validate this record */
rechead = ntfsx_record_header(record);