Skip to content

Instantly share code, notes, and snippets.

@groob
Created June 2, 2017 03:58
Show Gist options
  • Save groob/3b2f527abaaa31d801ea0092e19c7797 to your computer and use it in GitHub Desktop.
Save groob/3b2f527abaaa31d801ea0092e19c7797 to your computer and use it in GitHub Desktop.
func checkDistribution(pkgPath string) (bool, error) {
const (
xarHeaderMagic = 0x78617221
xarHeaderSize = 28
)
f, err := os.Open(pkgPath)
if err != nil {
return false, err
}
defer f.Close()
hdr := make([]byte, xarHeaderSize)
_, err = f.ReadAt(hdr, 0)
if err != nil {
return false, err
}
tocLenZlib := binary.BigEndian.Uint64(hdr[8:16])
ztoc := make([]byte, tocLenZlib)
_, err = f.ReadAt(ztoc, xarHeaderSize)
if err != nil {
return false, err
}
br := bytes.NewBuffer(ztoc)
zr, err := zlib.NewReader(br)
if err != nil {
return false, err
}
toc, err := ioutil.ReadAll(zr)
if err != nil {
return false, err
}
return bytes.Contains(toc, []byte(`<name>Distribution</name>`)), nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment