@@ -2,8 +2,11 @@ package generator
22
33import (
44 "bytes"
5+ "crypto/md5" // #nosec
6+ "crypto/sha256"
57 "errors"
68 "fmt"
9+ hash2 "hash"
710 "io"
811 "os"
912 "path/filepath"
@@ -92,7 +95,7 @@ func (g *Metadata) parseTemplate() (*template.Template, error) {
9295
9396func checksumFunc (logger log.Logger ) func (string ) string {
9497 return func (p string ) string {
95- return fmt .Sprintf ("%x" , fileHash (p , logger ))
98+ return fmt .Sprintf ("%x" , fileHash (p , logger , md5 . New ))
9699 }
97100}
98101
@@ -104,49 +107,55 @@ func hashFilesFunc(logger log.Logger) func(...string) string {
104107 paths , err := filepath .Glob (pattern )
105108 if err != nil {
106109 level .Error (logger ).Log ("could not parse file path as a glob pattern" )
110+
107111 continue
108112 }
109113
110114 for _ , p := range paths {
111- readers = append (readers , bytes .NewReader (fileHash (p , logger )))
115+ readers = append (readers , bytes .NewReader (fileHash (p , logger , sha256 . New )))
112116 }
113117 }
114118
115119 if len (readers ) == 0 {
116120 level .Debug (logger ).Log ("no matches found for glob" )
121+
117122 return ""
118123 }
119124
120125 level .Debug (logger ).Log ("found %d files to hash" , len (readers ))
121126
122- h , err := readerHasher (readers ... )
127+ h , err := readerHasher (sha256 . New , readers ... )
123128 if err != nil {
124129 level .Error (logger ).Log ("could not generate the hash of the input files: %s" , err .Error ())
130+
125131 return ""
126132 }
127133
128134 return fmt .Sprintf ("%x" , h )
129135 }
130136}
131137
132- func fileHash (path string , logger log.Logger ) []byte {
138+ func fileHash (path string , logger log.Logger , hasher func () hash2. Hash ) []byte {
133139 path , err := filepath .Abs (filepath .Clean (path ))
134140 if err != nil {
135141 level .Error (logger ).Log ("could not compute the absolute file path: %s" , err .Error ())
142+
136143 return []byte {}
137144 }
138145
139146 f , err := os .Open (path )
140147 if err != nil {
141148 level .Error (logger ).Log ("could not open the file: %s" , err .Error ())
149+
142150 return []byte {}
143151 }
144152
145153 defer internal .CloseWithErrLogf (logger , f , "checksum close defer" )
146154
147- h , err := readerHasher (f )
155+ h , err := readerHasher (hasher , f )
148156 if err != nil {
149157 level .Error (logger ).Log ("could not generate the hash of the input file: %s" , err .Error ())
158+
150159 return []byte {}
151160 }
152161
0 commit comments