Skip to content

Commit

Permalink
Fix some errors found by linters
Browse files Browse the repository at this point in the history
  • Loading branch information
Tasssadar committed Apr 24, 2018
1 parent 9bdbc5d commit 5619f8e
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 14 deletions.
3 changes: 2 additions & 1 deletion manifest.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ func ParseManifest(r io.Reader, enc ManifestEncoder, resources *ResourceTable) e
return fmt.Errorf("Chunk: 0x%08x: was not fully read", id)
}
}
return nil

return x.encoder.Flush()
}

func (x *manifestParseInfo) parseResourceIds(r *io.LimitedReader) error {
Expand Down
16 changes: 12 additions & 4 deletions resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ type ResourceConfigOption int

const (
ConfigFirst ResourceConfigOption = iota // Usually the smallest
ConfigLast // Usually the biggest
ConfigLast // Usually the biggest
)

// Parses the resources.arsc file
Expand Down Expand Up @@ -283,7 +283,9 @@ func (x *ResourceTable) parsePackage(r *io.LimitedReader, hdrLen uint16) error {
err = x.parseTypeSpec(lm, pkg, group)
case chunkTableType:
block := pkgBlock[chunkStartOffset : chunkStartOffset+int64(totalLen)]
err = x.parseType(lm, pkg, group, block, hdrLen)
if err = x.parseType(lm, pkg, group, block, hdrLen); err != nil {
break
}
fallthrough
default:
_, err = io.CopyN(ioutil.Discard, lm, lm.N)
Expand Down Expand Up @@ -431,7 +433,9 @@ func (x *ResourceTable) getEntry(group *packageGroup, typeId, entry uint32, conf
}

r := bytes.NewReader(thisType.chunkData)
r.Seek(int64(thisType.indexesStart+entry*4), io.SeekStart)
if _, err := r.Seek(int64(thisType.indexesStart+entry*4), io.SeekStart); err != nil {
return nil, err
}

var thisOffset uint32
if err := binary.Read(r, binary.LittleEndian, &thisOffset); err != nil {
Expand All @@ -447,7 +451,11 @@ func (x *ResourceTable) getEntry(group *packageGroup, typeId, entry uint32, conf
if int(offset) >= len(thisType.chunkData) || ((offset & 0x03) != 0) {
return nil, fmt.Errorf("Invalid entry 0x%04x offset: %d!", entry, offset)
}
r.Seek(int64(offset), io.SeekStart)

if _, err := r.Seek(int64(offset), io.SeekStart); err != nil {
return nil, err
}

res, err := x.parseEntry(r, typ.Package, typeId)
if err != nil {
lastErr = err
Expand Down
32 changes: 23 additions & 9 deletions zipreader.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ func OpenZip(zippath string) (zr *ZipReader, err error) {

defer func() {
if err != nil {
zr = nil
f.Close()
}
}()
Expand Down Expand Up @@ -173,7 +174,9 @@ func OpenZip(zippath string) (zr *ZipReader, err error) {
return
}

f.Seek(0, 0)
if _, err = f.Seek(0, 0); err != nil {
return
}

var off int64
for {
Expand All @@ -183,12 +186,17 @@ func OpenZip(zippath string) (zr *ZipReader, err error) {
}

var nameLen, extraLen, method uint16
f.Seek(off+8, 0)
if _, err = f.Seek(off+8, 0); err != nil {
return
}

if err = binary.Read(f, binary.LittleEndian, &method); err != nil {
return
}

f.Seek(off+26, 0)
if _, err = f.Seek(off+26, 0); err != nil {
return
}

if err = binary.Read(f, binary.LittleEndian, &nameLen); err != nil {
return
Expand Down Expand Up @@ -222,14 +230,16 @@ func OpenZip(zippath string) (zr *ZipReader, err error) {
method: method,
}}, zrf.entries...)

f.Seek(off+4, 0)
if _, err = f.Seek(off+4, 0); err != nil {
return
}
}
}

func tryReadZip(f *os.File) (r *zip.Reader, err error) {
defer func() {
if r := recover(); r != nil {
err = fmt.Errorf("%v", r)
if pn := recover(); pn != nil {
err = fmt.Errorf("%v", pn)
r = nil
}
}()
Expand All @@ -243,18 +253,22 @@ func tryReadZip(f *os.File) (r *zip.Reader, err error) {
return
}

func findNextFileHeader(f *os.File) (int64, error) {
func findNextFileHeader(f *os.File) (offset int64, err error) {
start, err := f.Seek(0, 1)
if err != nil {
return -1, err
}
defer f.Seek(start, 0)
defer func() {
if _, serr := f.Seek(start, 0); serr != nil && err == nil {
err = serr
}
}()

buf := make([]byte, 64*1024)
toCmp := []byte{0x50, 0x4B, 0x03, 0x04}

ok := 0
offset := start
offset = start

for {
n, err := f.Read(buf)
Expand Down

0 comments on commit 5619f8e

Please sign in to comment.