inject_hash preserves filemode Previously, inject_hash writes output file with 0644 regardless of input file. Now it preserves filemode of input when writing output file. Change-Id: I00db775e1b28f6d9a72986276e32a9b944317949 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/38844 Reviewed-by: Adam Langley <agl@google.com> Commit-Queue: Adam Langley <agl@google.com>
diff --git a/util/fipstools/inject_hash/inject_hash.go b/util/fipstools/inject_hash/inject_hash.go index 251df10..dbd5fb7 100644 --- a/util/fipstools/inject_hash/inject_hash.go +++ b/util/fipstools/inject_hash/inject_hash.go
@@ -39,6 +39,8 @@ func do(outPath, oInput string, arInput string, useSHA256 bool) error { var objectBytes []byte var isStatic bool + var perm os.FileMode + if len(arInput) > 0 { isStatic = true @@ -46,6 +48,12 @@ return fmt.Errorf("-in-archive and -in-object are mutually exclusive") } + fi, err := os.Stat(arInput) + if err != nil { + return err + } + perm = fi.Mode() + arFile, err := os.Open(arInput) if err != nil { return err @@ -65,7 +73,12 @@ objectBytes = contents } } else if len(oInput) > 0 { - var err error + fi, err := os.Stat(oInput) + if err != nil { + return err + } + perm = fi.Mode() + if objectBytes, err = ioutil.ReadFile(oInput); err != nil { return err } @@ -237,7 +250,7 @@ copy(objectBytes[offset:], calculated) - return ioutil.WriteFile(outPath, objectBytes, 0644) + return ioutil.WriteFile(outPath, objectBytes, perm & 0777) } func main() {