-
Notifications
You must be signed in to change notification settings - Fork 27
Open
Description
After parsing an object file, I get an invalid ArchiveHeader.Data field with garbage at the end. The ArchiveHeader.Size field is also set incorrectly.
Code:
package main
import (
"fmt"
"github.com/Binject/debug/goobj2"
)
func main() {
const magicHeaderName = "magic/example"
magicData := make([]byte, 256)
original, err := goobj2.Parse("a.obj", "main", nil)
if err != nil {
panic(err)
}
original.ArchiveMembers = append(original.ArchiveMembers, goobj2.ArchiveMember{
ArchiveHeader: goobj2.ArchiveHeader{
Name: magicHeaderName,
Size: int64(len(magicData)),
Data: magicData,
},
})
if err := original.Write("b.obj"); err != nil {
panic(err)
}
patched, err := goobj2.Parse("b.obj", "main", nil)
if err != nil {
panic(err)
}
var magicArchive goobj2.ArchiveMember
for _, member := range patched.ArchiveMembers {
if member.ArchiveHeader.Name == magicHeaderName {
magicArchive = member
break
}
}
if magicArchive.ArchiveHeader.Size != int64(len(magicData)) {
panic(fmt.Sprintf("real size %d != parsed size %d", magicArchive.ArchiveHeader.Size, len(magicData)))
}
}Output:
panic: real size 348 != parsed size 256
Metadata
Metadata
Assignees
Labels
No labels