]> Cypherpunks repositories - gostls13.git/commitdiff
archive/zip: fix casting overflow on 32-bit arch
authorLE Manh Cuong <cuong.manhle.vn@gmail.com>
Sat, 5 Jan 2019 16:39:24 +0000 (23:39 +0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 7 Jan 2019 04:23:06 +0000 (04:23 +0000)
Fixes #29555

Change-Id: Ia3c0dd65bcf94dea3f6e04c23c1fe5d6d0b2c1e9
Reviewed-on: https://go-review.googlesource.com/c/156399
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/archive/zip/zip_test.go

index 50218a2bbd72b807511dba594e880b9dc741e8b2..3d5c759851a3a4fe0bbfe5e67c057215778ae85f 100644 (file)
@@ -159,7 +159,7 @@ func (r *rleBuffer) Write(p []byte) (n int, err error) {
        return len(p), nil
 }
 
-func min(x, y int) int {
+func min(x, y int64) int64 {
        if x < y {
                return x
        }
@@ -190,7 +190,7 @@ func (r *rleBuffer) ReadAt(p []byte, off int64) (n int, err error) {
        if len(parts) > 0 {
                skipBytes := off - parts[0].off
                for _, part := range parts {
-                       repeat := min(int(part.n-skipBytes), len(p)-n)
+                       repeat := int(min(part.n-skipBytes, int64(len(p)-n)))
                        memset(p[n:n+repeat], part.b)
                        n += repeat
                        if n == len(p) {