From 2a78d0943fcc32a1cceed7eef2d772a17d113d5a Mon Sep 17 00:00:00 2001 From: Alin-Marius Cruceat Date: Thu, 12 Feb 2026 10:19:19 +0200 Subject: [PATCH 1/2] Replace zlib:crc32(Z, Bin) with erlang:crc32(Bin) --- src/egd_png.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/egd_png.erl b/src/egd_png.erl index fe66051..52c166b 100644 --- a/src/egd_png.erl +++ b/src/egd_png.erl @@ -99,7 +99,7 @@ create_chunk(Bin,Z) when is_list(Bin) -> create_chunk(list_to_binary(Bin),Z); create_chunk(Bin,Z) when is_binary(Bin) -> Sz = size(Bin)-4, - Crc = zlib:crc32(Z,Bin), + Crc = erlang:crc32(Bin), <>. % End tainted From 52e7415af6135c9bd29825296a77d8d0d48376d1 Mon Sep 17 00:00:00 2001 From: Alin-Marius Cruceat Date: Thu, 12 Feb 2026 10:39:00 +0200 Subject: [PATCH 2/2] Refactor egd_png.erl --- src/egd_png.erl | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/egd_png.erl b/src/egd_png.erl index 52c166b..61ca172 100644 --- a/src/egd_png.erl +++ b/src/egd_png.erl @@ -58,9 +58,7 @@ -define(get1p8(Idx),((Idx) band 1)). binary(W, H, Bitmap) when is_binary(Bitmap) -> - Z = zlib:open(), - Binary = bitmap2png(W, H, Bitmap, Z), - zlib:close(Z), + Binary = bitmap2png(W, H, Bitmap), Binary. @@ -68,10 +66,10 @@ binary(W, H, Bitmap) when is_binary(Bitmap) -> % Begin Tainted -bitmap2png(W, H, Bitmap,Z) -> - HDR = create_chunk(<<"IHDR",W:32,H:32,8:8,(png_type(r8g8b8)):8,0:8,0:8,0:8>>,Z), - DATA = create_chunk(["IDAT",compress_image(0,3*W,Bitmap,[])],Z), - END = create_chunk(<<"IEND">>,Z), +bitmap2png(W, H, Bitmap) -> + HDR = create_chunk(<<"IHDR",W:32,H:32,8:8,(png_type(r8g8b8)):8,0:8,0:8,0:8>>), + DATA = create_chunk(["IDAT",compress_image(0,3*W,Bitmap,[])]), + END = create_chunk(<<"IEND">>), list_to_binary([?MAGIC,HDR,DATA,END]). compress_image(I,RowLen, Bin, Acc) -> @@ -95,9 +93,9 @@ filter_row(Row,_RowLen) -> %png_type(r8g8b8a8) -> ?TRUECOLOUR_A; png_type(r8g8b8) -> ?TRUECOLOUR. -create_chunk(Bin,Z) when is_list(Bin) -> - create_chunk(list_to_binary(Bin),Z); -create_chunk(Bin,Z) when is_binary(Bin) -> +create_chunk(Bin) when is_list(Bin) -> + create_chunk(list_to_binary(Bin)); +create_chunk(Bin) when is_binary(Bin) -> Sz = size(Bin)-4, Crc = erlang:crc32(Bin), <>.