Skip to content

Commit eb0fd29

Browse files
authored
Merge pull request #6 from linux-immutability-tools/filecheck
validate: Check if file exists first
2 parents d396054 + b03a017 commit eb0fd29

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

core/signcheck.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,50 +3,58 @@ package core
33
import (
44
"bytes"
55
"fmt"
6-
"github.com/jedisct1/go-minisign"
76
"os"
87
"strings"
8+
9+
"github.com/jedisct1/go-minisign"
910
)
1011

11-
func GetSignatureFile(binary string) (string, error) {
12-
signatureFileSeparator := []byte{0x2D, 0x2D, 0x2D, 0x2D, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x2D, 0x2D, 0x2D, 0x2D}
13-
signatureFileEndSeparator := []byte{0x2D, 0x2D, 0x2D, 0x2D, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x2D, 0x2D, 0x2D, 0x2D}
12+
var (
13+
signatureFileSeparator = []byte("----begin attach----")
14+
signatureFileEndSeparator = []byte("----begin second attach----")
15+
signatureHashSeparator = []byte("----begin second attach----")
16+
)
1417

18+
func GetSignatureFile(binary string) (string, error) {
1519
data, err := os.ReadFile(binary)
1620
if err != nil {
1721
return "", err
1822
}
23+
1924
signatureFileIndex := bytes.LastIndex(data, signatureFileSeparator) + len(signatureFileSeparator)
2025
signatureFileEndIndex := bytes.LastIndex(data, signatureFileEndSeparator) + len(signatureFileEndSeparator)
2126
signatureFile := ""
27+
2228
for i := 0; i < signatureFileEndIndex-signatureFileIndex-len(signatureFileEndSeparator); i++ {
2329
signatureFile = signatureFile + string(data[signatureFileIndex+i])
2430
}
31+
2532
if strings.TrimSpace(signatureFile) == "" {
2633
fmt.Println("NO SIGNATURE FILE")
2734
return "", fmt.Errorf("no signature file found")
2835
}
36+
2937
return strings.Replace(signatureFile, "----begin second attach---", "", 1), nil
3038
}
3139

3240
func GetSignatureHash(binary string) (string, error) {
33-
signatureHashSeparator := []byte{0x2D, 0x2D, 0x2D, 0x2D, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x2D, 0x2D, 0x2D, 0x2D}
34-
3541
data, err := os.ReadFile(binary)
3642
if err != nil {
3743
return "", err
3844
}
39-
signatureHashIndex := bytes.LastIndex(data, signatureHashSeparator) + len(signatureHashSeparator)
4045

46+
signatureHashIndex := bytes.LastIndex(data, signatureHashSeparator) + len(signatureHashSeparator)
4147
signatureHash := ""
4248

4349
for i := 0; i < len(data)-signatureHashIndex; i++ {
4450
signatureHash = signatureHash + string(data[signatureHashIndex+i])
4551
}
52+
4653
if strings.TrimSpace(signatureHash) == "" {
4754
fmt.Println("NO SIGNATURE HASH")
4855
return "", fmt.Errorf("no signature hash found")
4956
}
57+
5058
return strings.Replace(signatureHash, "----begin attach---", "", 1), nil
5159
}
5260

core/validate.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ package core
33
import (
44
"crypto/sha1"
55
"fmt"
6-
"github.com/linux-immutability-tools/FsGuard/config"
76
"io"
87
"os"
98
"strconv"
109
"strings"
1110
"sync"
11+
12+
"github.com/linux-immutability-tools/FsGuard/config"
1213
)
1314

1415
func ValidatePath(recipePath string) error {
@@ -29,6 +30,11 @@ func ValidatePath(recipePath string) error {
2930
wg.Add(1)
3031
go func(prop []string) {
3132
defer wg.Done()
33+
if _, err := os.Stat(prop[0]); os.IsNotExist(err) {
34+
errCh <- fmt.Errorf("[FAIL] %s - File not found", prop[0])
35+
return
36+
}
37+
3238
file, err := os.Open(prop[0])
3339
if err != nil {
3440
errCh <- err

0 commit comments

Comments
 (0)