@@ -127,10 +127,7 @@ func unpackTar(tr *tar.Reader, path string, whitelist []string) error {
127127 // Check if the linkname already exists
128128 if _ , err := os .Stat (linkname ); ! os .IsNotExist (err ) {
129129 // If it exists, create the hard link
130- if err := os .Link (linkname , target ); err != nil {
131- logrus .Warnf ("Failed to create hard link between %s and %s: %v" , linkname , target , err )
132- }
133- logrus .Debugf ("Created hard link from %s to %s" , linkname , target )
130+ resolveHardlink (linkname , target )
134131 } else {
135132 hardlinks [target ] = linkname
136133 }
@@ -141,17 +138,22 @@ func unpackTar(tr *tar.Reader, path string, whitelist []string) error {
141138 logrus .Info ("Resolving hard links." )
142139 if _ , err := os .Stat (linkname ); ! os .IsNotExist (err ) {
143140 // If it exists, create the hard link
144- if err := os .Link (linkname , target ); err != nil {
145- logrus .Warnf ("Unable to create hard link from %s to %s: %v" , linkname , target , err )
146- }
147- logrus .Debugf ("Created hard link from %s to %s" , linkname , target )
141+ resolveHardlink (linkname , target )
148142 } else {
149- logrus .Warnf ("Unable to create hard link from %s to %s" , linkname , target )
143+ logrus .Errorf ("Unable to create hard link from %s to %s" , linkname , target )
150144 }
151145 }
152146 return nil
153147}
154148
149+ func resolveHardlink (linkname , target string ) {
150+ if err := os .Link (linkname , target ); err != nil {
151+ logrus .Warnf ("Unable to create hard link from %s to %s: %v" , linkname , target , err )
152+ } else {
153+ logrus .Debugf ("Created hard link from %s to %s" , linkname , target )
154+ }
155+ }
156+
155157func checkWhitelist (target string , whitelist []string ) bool {
156158 for _ , w := range whitelist {
157159 if HasFilepathPrefix (target , w ) {
0 commit comments