@@ -360,7 +360,7 @@ func NewValidatedClient(ctrlRuntimeClient client.Client, secretName, namespace,
360360 }, nil
361361}
362362
363- func newAWSSession (ctrlRuntimeClient client.Client , secretName , namespace , region string , configManagedClient client.Client ) (* session.Session , error ) {
363+ func newAWSSession (ctrlRuntimeClient client.Client , secretName , namespace , region string , configManagedClient client.Client ) (s * session.Session , err error ) {
364364 sessionOptions := session.Options {
365365 Config : aws.Config {
366366 Region : aws .String (region ),
@@ -384,7 +384,9 @@ func newAWSSession(ctrlRuntimeClient client.Client, secretName, namespace, regio
384384
385385 // Ensure the file gets deleted in any case.
386386 defer func () {
387- os .Remove (sharedCredsFile )
387+ if removeErr := os .Remove (sharedCredsFile ); removeErr != nil && err == nil {
388+ err = fmt .Errorf ("failed to remove shared credentials file %s: %v" , sharedCredsFile , removeErr )
389+ }
388390 }()
389391
390392 sessionOptions .SharedConfigState = session .SharedConfigEnable
@@ -401,7 +403,7 @@ func newAWSSession(ctrlRuntimeClient client.Client, secretName, namespace, regio
401403 }
402404
403405 // Otherwise default to relying on the IAM role of the masters where the actuator is running:
404- s , err : = session .NewSessionWithOptions (sessionOptions )
406+ s , err = session .NewSessionWithOptions (sessionOptions )
405407 if err != nil {
406408 return nil , err
407409 }
@@ -466,7 +468,7 @@ func buildCustomEndpointsMap(customEndpoints []configv1.AWSServiceEndpoint) map[
466468
467469// sharedCredentialsFileFromSecret returns a location (path) to the shared credentials
468470// file that was created using the provided secret
469- func sharedCredentialsFileFromSecret (secret * corev1.Secret ) (string , error ) {
471+ func sharedCredentialsFileFromSecret (secret * corev1.Secret ) (filename string , err error ) {
470472 var data []byte
471473 switch {
472474 case len (secret .Data ["credentials" ]) > 0 :
@@ -486,10 +488,18 @@ func sharedCredentialsFileFromSecret(secret *corev1.Secret) (string, error) {
486488 if err != nil {
487489 return "" , fmt .Errorf ("failed to create file for shared credentials: %v" , err )
488490 }
489- defer f .Close ()
490- if _ , err := f .Write (data ); err != nil {
491+
492+ defer func () {
493+ if closeErr := f .Close (); closeErr != nil && err == nil {
494+ err = fmt .Errorf ("failed to close file %s: %v" , f .Name (), closeErr )
495+ }
496+ }()
497+
498+ if _ , err = f .Write (data ); err != nil {
491499 // Delete the file in case of having an error. Otherwise the calling function needs to handle deletion.
492- defer func () { os .Remove (f .Name ()) }()
500+ if deleteErr := os .Remove (f .Name ()); deleteErr != nil {
501+ return "" , fmt .Errorf ("failed to write credentials to %s and delete it afterwards: %v, %v" , f .Name (), err , deleteErr )
502+ }
493503 return "" , fmt .Errorf ("failed to write credentials to %s: %v" , f .Name (), err )
494504 }
495505 return f .Name (), nil
0 commit comments