Skip to content

Commit 0a738ac

Browse files
authored
Merge pull request #690 from danielinux/fix_spi_flash_boundary_checks
Fix spi_flash_write_page to stop at len or page boundary
2 parents 3be63df + d9fe0f4 commit 0a738ac

4 files changed

Lines changed: 416 additions & 6 deletions

File tree

.gitignore

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ tools/check_config/check_config
121121
tools/test-expect-version/test-expect-version
122122
tools/test-update-server/server
123123
tools/uart-flash-server/ufserver
124-
tools/unit-tests/unit-parser
125124
tools/bin-assemble/bin-assemble
126125
tools/elf-parser/elf-parser
127126
tools/fdt-parser/fdt-parser
@@ -135,6 +134,29 @@ config/*.ld
135134
test-lib
136135
lib-fs
137136

137+
#unit tests
138+
139+
tools/unit-tests/unit-aes128
140+
tools/unit-tests/unit-aes256
141+
tools/unit-tests/unit-chacha20
142+
tools/unit-tests/unit-delta
143+
tools/unit-tests/unit-enc-nvm
144+
tools/unit-tests/unit-enc-nvm-flagshome
145+
tools/unit-tests/unit-extflash
146+
tools/unit-tests/unit-image
147+
tools/unit-tests/unit-libwolfboot-extra
148+
tools/unit-tests/unit-mock-state
149+
tools/unit-tests/unit-nvm
150+
tools/unit-tests/unit-nvm-flagshome
151+
tools/unit-tests/unit-parser
152+
tools/unit-tests/unit-pci
153+
tools/unit-tests/unit-pkcs11_store
154+
tools/unit-tests/unit-sectorflags
155+
tools/unit-tests/unit-spi-flash
156+
tools/unit-tests/unit-update-flash
157+
tools/unit-tests/unit-update-ram
158+
159+
138160
# Elf preprocessing tools
139161
tools/squashelf/**
140162
!tools/squashelf/squashelf.c

src/spi_flash.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ static int RAMFUNCTION spi_flash_write_page(uint32_t address, const void *data,
131131
address++;
132132
spi_read();
133133
len--;
134-
} while ((address & (SPI_FLASH_PAGE_SIZE - 1)) != 0);
134+
} while (len > 0 && (address & (SPI_FLASH_PAGE_SIZE - 1)) != 0);
135135
spi_cs_off(SPI_CS_PIO_BASE, SPI_CS_FLASH);
136136
}
137137
wait_busy();

tools/unit-tests/Makefile

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ LDFLAGS+=-ftest-coverage
2525

2626

2727

28-
TESTS:=unit-parser unit-extflash unit-aes128 unit-aes256 unit-chacha20 unit-pci \
29-
unit-mock-state unit-sectorflags unit-image unit-nvm unit-nvm-flagshome \
30-
unit-enc-nvm unit-enc-nvm-flagshome unit-delta unit-update-flash \
31-
unit-update-ram unit-pkcs11_store
28+
TESTS:=unit-parser unit-extflash unit-spi-flash unit-aes128 unit-aes256 \
29+
unit-chacha20 unit-pci unit-mock-state unit-sectorflags unit-image \
30+
unit-nvm unit-nvm-flagshome unit-enc-nvm unit-enc-nvm-flagshome \
31+
unit-delta unit-update-flash unit-update-ram unit-pkcs11_store
3232

3333
all: $(TESTS)
3434

@@ -91,6 +91,9 @@ unit-parser: ../../include/target.h unit-parser.c
9191
unit-extflash: ../../include/target.h unit-extflash.c
9292
gcc -o $@ $^ $(CFLAGS) $(LDFLAGS)
9393

94+
unit-spi-flash: ../../include/target.h unit-spi-flash.c
95+
gcc -o $@ $^ $(CFLAGS) $(LDFLAGS)
96+
9497
unit-aes128: ../../include/target.h unit-extflash.c
9598
gcc -o $@ $^ $(CFLAGS) $(LDFLAGS)
9699

0 commit comments

Comments
 (0)