From 17f6fd613e8b7039526fbb063c6751fc0c2008c3 Mon Sep 17 00:00:00 2001 From: Mike Sassak Date: Fri, 13 Sep 2013 16:37:50 -0700 Subject: Check all pattern arguments passed to binary:matches/2 Including an empty binary as one of multiple patterns passed to binary:matches/2 would crash BEAM with: "Cannot reallocate 1342177280 bytes of memory (of type "tmp")". This ensures each pattern is valid before trying to match. --- erts/emulator/beam/erl_bif_binary.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'erts/emulator') diff --git a/erts/emulator/beam/erl_bif_binary.c b/erts/emulator/beam/erl_bif_binary.c index 0db19a1ee6..ff775691b3 100644 --- a/erts/emulator/beam/erl_bif_binary.c +++ b/erts/emulator/beam/erl_bif_binary.c @@ -927,6 +927,9 @@ static int do_binary_match_compile(Eterm argument, Eterm *tag, Binary **binp) if (binary_bitsize(b) != 0) { goto badarg; } + if (binary_size(b) == 0) { + goto badarg; + } ++words; characters += binary_size(b); } -- cgit v1.2.3