lib/bitmap: fix unchecked error while reading bytes
authorLucas Bajolet <lucas.bajolet@gmail.com>
Tue, 8 May 2018 13:57:33 +0000 (09:57 -0400)
committerLucas Bajolet <lucas.bajolet@gmail.com>
Fri, 11 May 2018 03:14:40 +0000 (23:14 -0400)
The `read_byte` method from `Reader` may return a negative int if an
error is encountered while reading.

This was not checked in lib/bitmap, we therefore add it.

Signed-off-by: Lucas Bajolet <lucas.bajolet@gmail.com>

lib/bitmap/bitmap.nit

index 3110265..3c66f07 100644 (file)
@@ -130,7 +130,8 @@ class Bitmap
                # =============== Bitmap header ================
                for x in [0..13] do
                        var b = fileReader.read_byte
-                       bitmap_header[x] = b.to_i
+                       if b < 0 then return
+                       bitmap_header[x] = b
                end
                self.file_size = get_value(bitmap_header.subarray(2, 4))
                self.data_offset = get_value(bitmap_header.subarray(10, 4))
@@ -138,7 +139,8 @@ class Bitmap
                # =============== DIB header ================
                for x in [0..39] do
                        var b = fileReader.read_byte
-                       dib_header[x] = b.to_i
+                       if b < 0 then return
+                       dib_header[x] = b
                end
                var dib_size = get_value(dib_header.subarray(0, 4))
                # only support BITMAPINFOHEADER