1
0
mirror of https://github.com/garraflavatra/go-fmp.git synced 2025-06-27 20:15:11 +00:00

Stop timely

This commit is contained in:
2025-06-12 08:58:23 +02:00
parent 7fdc3377ca
commit 659ad61300
2 changed files with 8 additions and 3 deletions

View File

@ -167,19 +167,21 @@ func (ctx *FmpFile) readChunk(payload []byte) (*FmpChunk, error) {
if payload[0] == 0x07 {
length := binary.BigEndian.Uint16(payload[2 : 2+2])
payloadLimit := min(4+length, uint16(len(payload)))
return &FmpChunk{
Type: FMP_CHUNK_SEGMENTED_DATA,
Index: uint32(payload[1]),
Value: payload[4 : 4+length],
Value: payload[4:payloadLimit],
Length: 4 + uint32(length),
}, nil
}
if payload[0] == 0x0F {
length := uint32(binary.BigEndian.Uint16(payload[3 : 3+2]))
payloadLimit := min(5+length, uint32(len(payload)))
return &FmpChunk{
Type: FMP_CHUNK_SEGMENTED_DATA,
Index: uint32(binary.BigEndian.Uint16(payload[1 : 1+2])),
Value: payload[5 : 5+length],
Value: payload[5:payloadLimit],
Length: 5 + length,
}, nil
}

View File

@ -137,7 +137,10 @@ func (ctx *FmpFile) readSector() (*FmpSector, error) {
if chunk.Length == 0 {
panic("chunk length not set")
}
payload = payload[chunk.Length:]
payload = payload[min(chunk.Length, uint32(len(payload))):]
if len(payload) == 0 {
break
}
}
return sector, nil