summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yabin Cui <yabinc@google.com> 2022-09-01 21:01:04 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2022-09-01 21:01:04 +0000
commita73e67250365cbcd6af5b3a37e94ce144bc18297 (patch)
tree73854b2376316800096947595662e386e3bfb48a
parent3636a06fe024e3599bb82ecfa62c0bf11f8331a8 (diff)
parent7f5f22b2260c238edc1efa186cad7c656998d92a (diff)
Merge "symbol_inject: add step to codesign Mach-O binaries."
-rw-r--r--symbol_inject/cmd/symbol_inject.go9
-rw-r--r--symbol_inject/macho.go8
-rw-r--r--symbol_inject/symbol_inject.go7
3 files changed, 20 insertions, 4 deletions
diff --git a/symbol_inject/cmd/symbol_inject.go b/symbol_inject/cmd/symbol_inject.go
index 1397b37b1..89b361907 100644
--- a/symbol_inject/cmd/symbol_inject.go
+++ b/symbol_inject/cmd/symbol_inject.go
@@ -94,4 +94,13 @@ func main() {
os.Remove(*output)
os.Exit(5)
}
+
+ if file.IsMachoFile {
+ err = symbol_inject.CodeSignMachoFile(*output)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err.Error())
+ os.Remove(*output)
+ os.Exit(6)
+ }
+ }
}
diff --git a/symbol_inject/macho.go b/symbol_inject/macho.go
index 6ee3f4fbd..9946d34af 100644
--- a/symbol_inject/macho.go
+++ b/symbol_inject/macho.go
@@ -18,6 +18,7 @@ import (
"debug/macho"
"fmt"
"io"
+ "os/exec"
"sort"
"strings"
)
@@ -40,7 +41,7 @@ func extractMachoSymbols(machoFile *macho.File) (*File, error) {
return symbols[i].Value < symbols[j].Value
})
- file := &File{}
+ file := &File{IsMachoFile: true}
for _, section := range machoFile.Sections {
file.Sections = append(file.Sections, &Section{
@@ -95,3 +96,8 @@ func dumpMachoSymbols(r io.ReaderAt) error {
return nil
}
+
+func CodeSignMachoFile(path string) error {
+ cmd := exec.Command("/usr/bin/codesign", "--force", "-s", "-", path)
+ return cmd.Run()
+}
diff --git a/symbol_inject/symbol_inject.go b/symbol_inject/symbol_inject.go
index 2a3d67e6d..77aff6fe3 100644
--- a/symbol_inject/symbol_inject.go
+++ b/symbol_inject/symbol_inject.go
@@ -161,9 +161,10 @@ func findSymbol(file *File, symbolName string) (uint64, uint64, error) {
}
type File struct {
- r io.ReaderAt
- Symbols []*Symbol
- Sections []*Section
+ r io.ReaderAt
+ Symbols []*Symbol
+ Sections []*Section
+ IsMachoFile bool
}
type Symbol struct {