Skip to content

Commit 3e9bc14

Browse files
authored
Fixes #2263, prevent panic on invalid row reference in CalcCellValue (#2266)
- Update unit tests
1 parent 5ad5ab3 commit 3e9bc14

2 files changed

Lines changed: 6 additions & 1 deletion

File tree

calc.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1541,6 +1541,9 @@ func parseRef(ref string) (cellRef, bool, bool, error) {
15411541
return cr, true, false, nil
15421542
}
15431543
if cr.Row, rowErr = strconv.Atoi(cell); rowErr == nil { // cast to row
1544+
if cr.Row < 1 || cr.Row > TotalRows {
1545+
return cr, false, false, err
1546+
}
15441547
return cr, false, true, nil
15451548
}
15461549
return cr, false, false, err
@@ -1777,7 +1780,7 @@ func (f *File) rangeResolver(ctx *calcContext, cellRefs, cellRanges *list.List)
17771780

17781781
for row := valueRange[0]; row <= valueRange[1]; row++ {
17791782
colMax := 0
1780-
if row <= len(ws.SheetData.Row) {
1783+
if 0 < row && row <= len(ws.SheetData.Row) {
17811784
rowData := &ws.SheetData.Row[row-1]
17821785
colMax = min(valueRange[3], len(rowData.C))
17831786
}

calc_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2908,6 +2908,8 @@ func TestCalcCellValue(t *testing.T) {
29082908
"SUM(1/)": {ErrInvalidFormula.Error(), ErrInvalidFormula.Error()},
29092909
"SUM(1*SUM(1/0))": {"#DIV/0!", "#DIV/0!"},
29102910
"SUM(1*SUM(1/0)*1)": {"", "#DIV/0!"},
2911+
"SUM(0:2)": {"#NAME?", "invalid reference"},
2912+
"SUM(1:1048577)": {"#NAME?", "invalid reference"},
29112913
// SUMIF
29122914
"SUMIF()": {"#VALUE!", "SUMIF requires at least 2 arguments"},
29132915
// SUMSQ

0 commit comments

Comments
 (0)