Fix transfer length checks

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich
2023-03-24 10:06:19 -07:00
parent 7e32e584ff
commit cfb52c6130
2 changed files with 15 additions and 6 deletions

View File

@@ -159,6 +159,9 @@ class AxiLiteMasterWrite(Region, Reset):
if isinstance(data, int):
raise ValueError("Expected bytes or bytearray for data")
if address+len(data) > 2**self.address_width:
raise ValueError("Requested transfer overruns end of address space")
if not self.awprot_present and prot != AxiProt.NONSECURE:
raise ValueError("awprot sideband signal value specified, but signal is not connected")
@@ -182,7 +185,7 @@ class AxiLiteMasterWrite(Region, Reset):
if isinstance(data, int):
raise ValueError("Expected bytes or bytearray for data")
if address+len(data) >= 2**self.address_width:
if address+len(data) > 2**self.address_width:
raise ValueError("Requested transfer overruns end of address space")
if not self.awprot_present and prot != AxiProt.NONSECURE:
@@ -404,6 +407,12 @@ class AxiLiteMasterRead(Region, Reset):
if address < 0 or address >= 2**self.address_width:
raise ValueError("Address out of range")
if length < 0:
raise ValueError("Read length must be positive")
if address+length > 2**self.address_width:
raise ValueError("Requested transfer overruns end of address space")
if not self.arprot_present and prot != AxiProt.NONSECURE:
raise ValueError("arprot sideband signal value specified, but signal is not connected")
@@ -425,7 +434,7 @@ class AxiLiteMasterRead(Region, Reset):
if length < 0:
raise ValueError("Read length must be positive")
if address+length >= 2**self.address_width:
if address+length > 2**self.address_width:
raise ValueError("Requested transfer overruns end of address space")
if not self.arprot_present and prot != AxiProt.NONSECURE: