@@ -499,10 +499,16 @@ func saveProtocolResults(findings []types.Finding, output string) error {
499499 }
500500 }()
501501
502- // Create report
503- fmt .Fprintf (file , "Protocol Security Scan Report\n " )
504- fmt .Fprintf (file , "Generated: %s\n " , time .Now ().Format (time .RFC3339 ))
505- fmt .Fprintf (file , "=====================================\n \n " )
502+ // Create report - check all write errors
503+ if _ , err := fmt .Fprintf (file , "Protocol Security Scan Report\n " ); err != nil {
504+ return fmt .Errorf ("failed to write report header: %w" , err )
505+ }
506+ if _ , err := fmt .Fprintf (file , "Generated: %s\n " , time .Now ().Format (time .RFC3339 )); err != nil {
507+ return fmt .Errorf ("failed to write report timestamp: %w" , err )
508+ }
509+ if _ , err := fmt .Fprintf (file , "=====================================\n \n " ); err != nil {
510+ return fmt .Errorf ("failed to write report separator: %w" , err )
511+ }
506512
507513 // Group by target
508514 byTarget := make (map [string ][]types.Finding )
@@ -517,28 +523,48 @@ func saveProtocolResults(findings []types.Finding, output string) error {
517523 }
518524
519525 for target , targetFindings := range byTarget {
520- fmt .Fprintf (file , "Target: %s\n " , target )
521- fmt .Fprintf (file , "-------------------\n " )
526+ if _ , err := fmt .Fprintf (file , "Target: %s\n " , target ); err != nil {
527+ return fmt .Errorf ("failed to write target header: %w" , err )
528+ }
529+ if _ , err := fmt .Fprintf (file , "-------------------\n " ); err != nil {
530+ return fmt .Errorf ("failed to write target separator: %w" , err )
531+ }
522532
523533 for _ , finding := range targetFindings {
524- fmt .Fprintf (file , "\n Title: %s\n " , finding .Title )
525- fmt .Fprintf (file , "Type: %s\n " , finding .Type )
526- fmt .Fprintf (file , "Severity: %s\n " , finding .Severity )
527- fmt .Fprintf (file , "Description: %s\n " , finding .Description )
534+ if _ , err := fmt .Fprintf (file , "\n Title: %s\n " , finding .Title ); err != nil {
535+ return fmt .Errorf ("failed to write finding title: %w" , err )
536+ }
537+ if _ , err := fmt .Fprintf (file , "Type: %s\n " , finding .Type ); err != nil {
538+ return fmt .Errorf ("failed to write finding type: %w" , err )
539+ }
540+ if _ , err := fmt .Fprintf (file , "Severity: %s\n " , finding .Severity ); err != nil {
541+ return fmt .Errorf ("failed to write finding severity: %w" , err )
542+ }
543+ if _ , err := fmt .Fprintf (file , "Description: %s\n " , finding .Description ); err != nil {
544+ return fmt .Errorf ("failed to write finding description: %w" , err )
545+ }
528546
529547 if finding .Solution != "" {
530- fmt .Fprintf (file , "Remediation: %s\n " , finding .Solution )
548+ if _ , err := fmt .Fprintf (file , "Remediation: %s\n " , finding .Solution ); err != nil {
549+ return fmt .Errorf ("failed to write finding remediation: %w" , err )
550+ }
531551 }
532552
533553 if len (finding .References ) > 0 {
534- fmt .Fprintf (file , "References:\n " )
554+ if _ , err := fmt .Fprintf (file , "References:\n " ); err != nil {
555+ return fmt .Errorf ("failed to write references header: %w" , err )
556+ }
535557 for _ , ref := range finding .References {
536- fmt .Fprintf (file , " - %s\n " , ref )
558+ if _ , err := fmt .Fprintf (file , " - %s\n " , ref ); err != nil {
559+ return fmt .Errorf ("failed to write reference: %w" , err )
560+ }
537561 }
538562 }
539563 }
540564
541- fmt .Fprintf (file , "\n =====================================\n \n " )
565+ if _ , err := fmt .Fprintf (file , "\n =====================================\n \n " ); err != nil {
566+ return fmt .Errorf ("failed to write section separator: %w" , err )
567+ }
542568 }
543569
544570 return nil
0 commit comments