"encoding/binary"
"errors"
"fmt"
+ "internal/saferio"
"internal/xcoff"
"io"
"io/fs"
if n > size {
n = size
}
- data := make([]byte, n)
- _, err := prog.ReadAt(data, int64(addr-prog.Vaddr))
- if err != nil {
- return nil, err
- }
- return data, nil
+ return saferio.ReadDataAt(prog, n, int64(addr-prog.Vaddr))
}
}
return nil, errUnrecognizedFormat
if n > size {
n = size
}
- data := make([]byte, n)
- _, err := sect.ReadAt(data, int64(addr-uint64(sect.VirtualAddress)))
- if err != nil {
- return nil, errUnrecognizedFormat
- }
- return data, nil
+ return saferio.ReadDataAt(sect, n, int64(addr-uint64(sect.VirtualAddress)))
}
}
return nil, errUnrecognizedFormat
if n > size {
n = size
}
- data := make([]byte, n)
- _, err := seg.ReadAt(data, int64(addr-seg.Addr))
- if err != nil {
- return nil, err
- }
- return data, nil
+ return saferio.ReadDataAt(seg, n, int64(addr-seg.Addr))
}
}
return nil, errUnrecognizedFormat
if n > size {
n = size
}
- data := make([]byte, n)
- _, err := sect.ReadAt(data, int64(addr-sect.VirtualAddress))
- if err != nil {
- return nil, err
- }
- return data, nil
+ return saferio.ReadDataAt(sect, n, int64(addr-sect.VirtualAddress))
}
}
return nil, errors.New("address not mapped")
if n > size {
n = size
}
- data := make([]byte, n)
- _, err := sect.ReadAt(data, int64(addr-uint64(sect.Offset)))
- if err != nil {
- return nil, err
- }
- return data, nil
+ return saferio.ReadDataAt(sect, n, int64(addr-uint64(sect.Offset)))
}
}
return nil, errors.New("address not mapped")