Skip to content
Snippets Groups Projects
  • Anatolij Gustschin's avatar
    92faa8b1
    zlib: handle overflow while calculating available stream input size · 92faa8b1
    Anatolij Gustschin authored
    
    If compressed data is located in sectors at the end of the flash and
    it's offset + input stream size > 0xFFFFFFFF, the uncompressing time
    is very long, since processing of the stream is done bytewise (and
    not blockwise) due to overflow in inflate_fast() while calculation
    and checking for enough input available.
    
    Check for this overflow condition and limit the available stream
    input size to the actually max. possible input size. This fixes
    the problem.
    
    The issue is easily reproduceable by placing a gziped bitmap in flash,
    e.g. at FFF80000, and running 'bmp' commands like 'bmp info FFF80000'
    or 'bmp display FFF80000'. The uncompressing can take up to 3 sec.
    whereas it should normaly take a fraction of a second. If the
    'splashimage' environment variable points to this address, the
    booting time also increases significantly.
    
    Signed-off-by: default avatarAnatolij Gustschin <agust@denx.de>
    92faa8b1
    History
    zlib: handle overflow while calculating available stream input size
    Anatolij Gustschin authored
    
    If compressed data is located in sectors at the end of the flash and
    it's offset + input stream size > 0xFFFFFFFF, the uncompressing time
    is very long, since processing of the stream is done bytewise (and
    not blockwise) due to overflow in inflate_fast() while calculation
    and checking for enough input available.
    
    Check for this overflow condition and limit the available stream
    input size to the actually max. possible input size. This fixes
    the problem.
    
    The issue is easily reproduceable by placing a gziped bitmap in flash,
    e.g. at FFF80000, and running 'bmp' commands like 'bmp info FFF80000'
    or 'bmp display FFF80000'. The uncompressing can take up to 3 sec.
    whereas it should normaly take a fraction of a second. If the
    'splashimage' environment variable points to this address, the
    booting time also increases significantly.
    
    Signed-off-by: default avatarAnatolij Gustschin <agust@denx.de>