Skip to content

Commit 332f412

Browse files
added error checks for file handling
1 parent e06d915 commit 332f412

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

gatlingparser/gatlingparser.go

+23-4
Original file line numberDiff line numberDiff line change
@@ -441,9 +441,22 @@ func stringProcessor(lineBuffer []byte) error {
441441
}
442442

443443
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+
}()
445450
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+
}
447460
if firstByte == 0 {
448461
msg, err := ReadRunMessage(bufio.NewReader(file))
449462
if err == io.EOF {
@@ -454,7 +467,9 @@ func detectGatlingLogVersion(file *os.File) (string, error) {
454467
}
455468
return msg.GatlingVersion, nil
456469
} 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+
}
458473
reader := bufio.NewReader(file)
459474
var line []byte
460475
var err error
@@ -650,7 +665,11 @@ func parseStart(ctx context.Context, wg *sync.WaitGroup) {
650665
if err != nil {
651666
l.Errorf("Failed to read %s file: %v\n", simulationLogFileName, err)
652667
}
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+
}()
654673

655674
ver, err := detectGatlingLogVersion(file)
656675
if err != nil {

0 commit comments

Comments
 (0)