@@ -441,9 +441,22 @@ func stringProcessor(lineBuffer []byte) error {
441
441
}
442
442
443
443
func detectGatlingLogVersion (file * os.File ) (string , error ) {
444
- defer file .Seek (0 , 0 )
444
+ defer func () {
445
+ if _ , err := file .Seek (0 , 0 ); err != nil {
446
+ // Log the error or handle it appropriately
447
+ l .Errorf ("Failed to seek to beginning of file: %v" , err )
448
+ }
449
+ }()
445
450
var firstByte byte
446
- binary .Read (file , binary .BigEndian , & firstByte )
451
+ if err := binary .Read (file , binary .BigEndian , & firstByte ); err != nil {
452
+ if err == io .EOF {
453
+ return "" , fmt .Errorf ("file is empty" )
454
+ }
455
+ if err == io .ErrUnexpectedEOF {
456
+ return "" , fmt .Errorf ("file is truncated" )
457
+ }
458
+ return "" , fmt .Errorf ("failed to read first byte: %w" , err )
459
+ }
447
460
if firstByte == 0 {
448
461
msg , err := ReadRunMessage (bufio .NewReader (file ))
449
462
if err == io .EOF {
@@ -454,7 +467,9 @@ func detectGatlingLogVersion(file *os.File) (string, error) {
454
467
}
455
468
return msg .GatlingVersion , nil
456
469
} else {
457
- file .Seek (0 , 0 )
470
+ if offset , err := file .Seek (0 , 0 ); err != nil {
471
+ return "" , fmt .Errorf ("failed to seek to beginning of file (offset %d): %w" , offset , err )
472
+ }
458
473
reader := bufio .NewReader (file )
459
474
var line []byte
460
475
var err error
@@ -650,7 +665,11 @@ func parseStart(ctx context.Context, wg *sync.WaitGroup) {
650
665
if err != nil {
651
666
l .Errorf ("Failed to read %s file: %v\n " , simulationLogFileName , err )
652
667
}
653
- defer file .Close ()
668
+ defer func () {
669
+ if err := file .Close (); err != nil {
670
+ l .Errorf ("Failed to close file: %v" , err )
671
+ }
672
+ }()
654
673
655
674
ver , err := detectGatlingLogVersion (file )
656
675
if err != nil {
0 commit comments