mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Don't segfault on null bytes in REPTs and MACROs
Previously, the copyrept() and copymacro() functions would halt their first loop (in which they determine the length of the block) prematurely, causing an underflow when setting len, eventually causing memory issues. Whilst this doesn’t solve the len underflow entirely (e.g. if the file ends immediately without an ENDR/ENDM), it should help with this exact scenario of null bytes (as #50).
This commit is contained in:
@@ -142,8 +142,9 @@ void copyrept( void )
|
||||
{
|
||||
SLONG level=1, len, instring=0;
|
||||
char *src=pCurrentBuffer->pBuffer;
|
||||
char *bufferEnd = pCurrentBuffer->pBufferStart + pCurrentBuffer->nBufferSize;
|
||||
|
||||
while( *src && level )
|
||||
while( src < bufferEnd && level )
|
||||
{
|
||||
if( instring==0 )
|
||||
{
|
||||
@@ -217,8 +218,9 @@ void copymacro( void )
|
||||
{
|
||||
SLONG level=1, len, instring=0;
|
||||
char *src=pCurrentBuffer->pBuffer;
|
||||
char *bufferEnd = pCurrentBuffer->pBufferStart + pCurrentBuffer->nBufferSize;
|
||||
|
||||
while( *src && level )
|
||||
while( src < bufferEnd && level )
|
||||
{
|
||||
if( instring==0 )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user