From 9686eb020fd24646599695c1bbbe936fc50ba41a Mon Sep 17 00:00:00 2001 From: MaysWind Date: Mon, 15 Sep 2025 22:51:16 +0800 Subject: [PATCH] fix cannot import OFX file which has only one but very long line (#243) --- pkg/converters/ofx/ofx_data_reader.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pkg/converters/ofx/ofx_data_reader.go b/pkg/converters/ofx/ofx_data_reader.go index 030be917..78cc21ae 100644 --- a/pkg/converters/ofx/ofx_data_reader.go +++ b/pkg/converters/ofx/ofx_data_reader.go @@ -4,6 +4,7 @@ import ( "bufio" "bytes" "encoding/xml" + "io" "regexp" "strings" @@ -269,19 +270,27 @@ func readOFX1FileHeader(ctx core.Context, data []byte) (fileHeader *ofxFileHeade func readOFX2FileHeader(ctx core.Context, data []byte) (fileHeader *ofxFileHeader, err error) { reader := bytes.NewReader(data) - scanner := bufio.NewScanner(reader) + bufReader := bufio.NewReader(reader) fileHeader = &ofxFileHeader{} headerLine := "" - for scanner.Scan() { - line := scanner.Text() - + for { + line, err := bufReader.ReadString('\n') ofxHeaderStartIndex := strings.Index(line, "= 0 { headerLine = ofx2HeaderPattern.FindString(line) break } + + if err != nil { + if err == io.EOF { + break + } else { + log.Errorf(ctx, "[ofx_data_reader.readOFX2FileHeader] cannot read ofx 2.x file, because %s", err.Error()) + return nil, errs.ErrInvalidOFXFile + } + } } if headerLine == "" {