forked from TrueCloudLab/restic
convert uid/gid -1 to 0 only in 32-bit tar dump
Only for a 32-bit build of restic, convert a uid or gid value of -1 to 0.
This commit is contained in:
parent
a86a56cf3b
commit
3b516d4b70
2 changed files with 7 additions and 9 deletions
|
@ -1,12 +1,9 @@
|
||||||
Bugfix: fix restic dump of tar file with 32-bit binary
|
Bugfix: fix restic dump of tar file with 32-bit binary
|
||||||
|
|
||||||
In restic up to 0.14.0, the restic dump from a 32-bit binary of a
|
When using a 32-bit build of restic, the `restic dump` command could in some
|
||||||
snapshot of standard input that was created in Windows has as a
|
cases create tar files containing negative uid and gid. These files cannot be
|
||||||
result a tar file whose content has a negative uid and gid. As a
|
read by gnu tar. This corner case especially applies to backups from stdin on Windows.
|
||||||
result, gnu tar exits with failure status whenever it tries to
|
We have changed the dump command to create valid tar files in this case.
|
||||||
access such a tar file. With this fix, the tar file that is now
|
|
||||||
dumped from a 32-bit binary has content with non-negative uid and
|
|
||||||
gid.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4103
|
https://github.com/restic/restic/issues/4103
|
||||||
https://github.com/restic/restic/pull/4104
|
https://github.com/restic/restic/pull/4104
|
||||||
|
|
|
@ -38,9 +38,10 @@ const (
|
||||||
cISVTX = 0o1000 // Save text (sticky bit)
|
cISVTX = 0o1000 // Save text (sticky bit)
|
||||||
)
|
)
|
||||||
|
|
||||||
// substitute a uid or gid of -1 (which was converted to 2^32 - 1) with zero
|
// in a 32-bit build of restic:
|
||||||
|
// substitute a uid or gid of -1 (which was converted to 2^32 - 1) with 0
|
||||||
func tarIdentifier(id uint32) int {
|
func tarIdentifier(id uint32) int {
|
||||||
if int32(id) == -1 {
|
if int(id) == -1 {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
return int(id)
|
return int(id)
|
||||||
|
|
Loading…
Reference in a new issue