Prevent reading past TES4 record in header parse
Bump version to 0.1.3
This commit is contained in:
parent
c952eeac7a
commit
12beff1014
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -232,7 +232,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "skyrim-cell-dump"
|
||||
version = "0.1.2"
|
||||
version = "0.1.3"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"argh",
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "skyrim-cell-dump"
|
||||
version = "0.1.2"
|
||||
version = "0.1.3"
|
||||
edition = "2018"
|
||||
authors = ["Tyler Hallada <tyler@hallada.net>"]
|
||||
description = "Library and binary for parsing Skyrim plugin files and extracting CELL data"
|
||||
|
@ -263,12 +263,14 @@ fn parse_group_data<'a>(
|
||||
}
|
||||
|
||||
fn parse_plugin_header(input: &[u8]) -> IResult<&[u8], PluginHeader> {
|
||||
let (mut input, _tes4) = verify(parse_record_header, |record_header| {
|
||||
let (mut input, tes4) = verify(parse_record_header, |record_header| {
|
||||
record_header.record_type == "TES4"
|
||||
})(input)?;
|
||||
let (remaining, _hedr) = verify(parse_field_header, |field_header| {
|
||||
let mut consumed_bytes = 0;
|
||||
let (remaining, hedr) = verify(parse_field_header, |field_header| {
|
||||
field_header.field_type == "HEDR"
|
||||
})(input)?;
|
||||
consumed_bytes += hedr.size as u32 + 6;
|
||||
input = remaining;
|
||||
let (remaining, (version, num_records_and_groups, next_object_id)) = parse_hedr_fields(input)?;
|
||||
input = remaining;
|
||||
@ -276,8 +278,9 @@ fn parse_plugin_header(input: &[u8]) -> IResult<&[u8], PluginHeader> {
|
||||
let mut description = None;
|
||||
let mut masters = vec![];
|
||||
let mut large_size = None;
|
||||
loop {
|
||||
while consumed_bytes < tes4.size as u32 {
|
||||
let (remaining, field) = parse_field_header(input)?;
|
||||
consumed_bytes += field.size as u32 + 6;
|
||||
input = remaining;
|
||||
match field.field_type {
|
||||
"CNAM" => {
|
||||
|
Loading…
Reference in New Issue
Block a user