diff --git a/core/image/png/png.odin b/core/image/png/png.odin index 87efcf9b59d..ef3d617eb24 100644 --- a/core/image/png/png.odin +++ b/core/image/png/png.odin @@ -250,10 +250,14 @@ read_header :: proc(ctx: ^$C) -> (image.PNG_IHDR, Error) { header := (^image.PNG_IHDR)(raw_data(c.data))^ // Validate IHDR using header - if width == 0 || height == 0 || u128(width) * u128(height) > image.MAX_DIMENSIONS { + if width == 0 || height == 0 { return {}, .Invalid_Image_Dimensions } + if u128(width) * u128(height) > image.MAX_DIMENSIONS { + return {}, .Image_Dimensions_Too_Large + } + if compression_method != 0 { return {}, compress.General_Error.Unknown_Compression_Method } diff --git a/core/image/tga/tga.odin b/core/image/tga/tga.odin index 5fda803c577..c20201d6ab3 100644 --- a/core/image/tga/tga.odin +++ b/core/image/tga/tga.odin @@ -153,7 +153,7 @@ load_from_context :: proc(ctx: ^$C, options := Options{}, allocator := context.a // Intentionally blank case .Uncompressed_Black_White: black_white = true - dest_depth = 24 + dest_depth = 8 if .do_not_expand_grayscale in options else 24 case .Uncompressed_Color_Mapped: color_mapped = true case .Compressed_Color_Mapped: @@ -162,7 +162,7 @@ load_from_context :: proc(ctx: ^$C, options := Options{}, allocator := context.a case .Compressed_Black_White: black_white = true rle_encoding = true - dest_depth = 24 + dest_depth = 8 if .do_not_expand_grayscale in options else 24 case: return nil, .Unsupported_Format @@ -181,6 +181,9 @@ load_from_context :: proc(ctx: ^$C, options := Options{}, allocator := context.a } switch dest_depth { + case 8: // R8 + src_channels = 1 + dest_channels = 1 case 15: // B5G5R5 src_channels = 2 dest_channels = 3