]> Cypherpunks repositories - gostls13.git/commitdiff
archive/tar: correct value passed to Uname method
authorIan Lance Taylor <iant@golang.org>
Thu, 10 Aug 2023 00:46:00 +0000 (17:46 -0700)
committerGopher Robot <gobot@golang.org>
Thu, 10 Aug 2023 14:37:50 +0000 (14:37 +0000)
For #50102

Change-Id: I28b5579611b07952b6379bc4603daf29a86a3be0
Reviewed-on: https://go-review.googlesource.com/c/go/+/518056
Auto-Submit: Ian Lance Taylor <iant@google.com>
Run-TryBot: Joseph Tsai <joetsai@digital-static.net>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Tianon Gravi (Andrew) <admwiggin@gmail.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: qiulaidongfeng <2645477756@qq.com>
Reviewed-by: Joseph Tsai <joetsai@digital-static.net>
src/archive/tar/common.go
src/archive/tar/tar_test.go

index f141548db89cb0768647506979907b0941cecdc1..8af17efa511cf7a7f0bb0e2010c1e3f5a4861e9a 100644 (file)
@@ -726,7 +726,7 @@ func FileInfoHeader(fi fs.FileInfo, link string) (*Header, error) {
                if err != nil {
                        return nil, err
                }
-               h.Uname, err = iface.Uname(h.Gid)
+               h.Uname, err = iface.Uname(h.Uid)
                if err != nil {
                        return nil, err
                }
index 6bb27ec3e846d1b8771b9cf53c313ee73bf028db..49d31bb757bcdecb948baa0b443896fe41bf9193 100644 (file)
@@ -849,6 +849,11 @@ func Benchmark(b *testing.B) {
 
 }
 
+const (
+       testUid = 10
+       testGid = 20
+)
+
 type fileInfoNames struct{}
 
 func (f *fileInfoNames) Name() string {
@@ -876,14 +881,29 @@ func (f *fileInfoNames) Sys() any {
 }
 
 func (f *fileInfoNames) Uname(uid int) (string, error) {
-       return "Uname", nil
+       if uid == testUid {
+               return "Uname", nil
+       }
+       return "", nil
 }
 
 func (f *fileInfoNames) Gname(gid int) (string, error) {
-       return "Gname", nil
+       if gid == testGid {
+               return "Gname", nil
+       }
+       return "", nil
 }
 
 func TestFileInfoHeaderUseFileInfoNames(t *testing.T) {
+       origLoadUidAndGid := loadUidAndGid
+       defer func() {
+               loadUidAndGid = origLoadUidAndGid
+       }()
+       loadUidAndGid = func(fi fs.FileInfo, uid, gid *int) {
+               *uid = testUid
+               *gid = testGid
+       }
+
        info := &fileInfoNames{}
        header, err := FileInfoHeader(info, "")
        if err != nil {