841c1f3388
This blurb exists because we reused the same commit from an old patch, and thus got the commit message with it. However the message is confusing in this context. It was suggested in review that we should remove the confusing message. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
75 lines
2.3 KiB
Diff
75 lines
2.3 KiB
Diff
From bc0de86b495ae014b209431ed7cb90fc3d5e4d1f Mon Sep 17 00:00:00 2001
|
|
From: Kir Kolyshkin <kolyshkin@gmail.com>
|
|
Date: Mon, 9 Apr 2018 15:58:40 -0700
|
|
Subject: [PATCH] archive/tar: do not populate user/group names
|
|
|
|
This reverts part of commit 29a18899379c ("archive/tar: populate
|
|
uname/gname/devmajor/devminor in FileInfoHeader"). The reason is
|
|
using os/user functions to resolved uids/gids to names breaks
|
|
the static build for Linux/glibc case (the resulting binary panics
|
|
on NULL pointer dereference).
|
|
|
|
For much more details, see https://github.com/golang/go/issues/23265
|
|
|
|
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
|
|
---
|
|
src/archive/tar/stat_unix.go | 26 +++-----------------------
|
|
1 file changed, 3 insertions(+), 23 deletions(-)
|
|
|
|
diff --git a/src/archive/tar/stat_unix.go b/src/archive/tar/stat_unix.go
|
|
index 868105f338..9640ed4bab 100644
|
|
--- a/src/archive/tar/stat_unix.go
|
|
+++ b/src/archive/tar/stat_unix.go
|
|
@@ -8,10 +8,7 @@ package tar
|
|
|
|
import (
|
|
"os"
|
|
- "os/user"
|
|
"runtime"
|
|
- "strconv"
|
|
- "sync"
|
|
"syscall"
|
|
)
|
|
|
|
@@ -19,10 +16,6 @@ func init() {
|
|
sysStat = statUnix
|
|
}
|
|
|
|
-// userMap and groupMap caches UID and GID lookups for performance reasons.
|
|
-// The downside is that renaming uname or gname by the OS never takes effect.
|
|
-var userMap, groupMap sync.Map // map[int]string
|
|
-
|
|
func statUnix(fi os.FileInfo, h *Header) error {
|
|
sys, ok := fi.Sys().(*syscall.Stat_t)
|
|
if !ok {
|
|
@@ -31,22 +24,9 @@ func statUnix(fi os.FileInfo, h *Header) error {
|
|
h.Uid = int(sys.Uid)
|
|
h.Gid = int(sys.Gid)
|
|
|
|
- // Best effort at populating Uname and Gname.
|
|
- // The os/user functions may fail for any number of reasons
|
|
- // (not implemented on that platform, cgo not enabled, etc).
|
|
- if u, ok := userMap.Load(h.Uid); ok {
|
|
- h.Uname = u.(string)
|
|
- } else if u, err := user.LookupId(strconv.Itoa(h.Uid)); err == nil {
|
|
- h.Uname = u.Username
|
|
- userMap.Store(h.Uid, h.Uname)
|
|
- }
|
|
- if g, ok := groupMap.Load(h.Gid); ok {
|
|
- h.Gname = g.(string)
|
|
- } else if g, err := user.LookupGroupId(strconv.Itoa(h.Gid)); err == nil {
|
|
- h.Gname = g.Name
|
|
- groupMap.Store(h.Gid, h.Gname)
|
|
- }
|
|
-
|
|
+ // TODO(bradfitz): populate username & group. os/user
|
|
+ // doesn't cache LookupId lookups, and lacks group
|
|
+ // lookup functions.
|
|
h.AccessTime = statAtime(sys)
|
|
h.ChangeTime = statCtime(sys)
|
|
|
|
|
|
base-commit: 4af1337d1e9eb9e7b766c9deb787c78413bb25c4
|
|
--
|
|
2.24.1
|
|
|