diff options
author | Fredrik Gustafsson <[email protected]> | 2013-09-30 16:21:58 +0200 |
---|---|---|
committer | Fredrik Gustafsson <[email protected]> | 2013-09-30 16:21:58 +0200 |
commit | e6b5ae09d292ee0251aab875be1d3245f260b493 (patch) | |
tree | 94b25ae29fefcdb18ca98fe6d835971c19e5fa48 | |
parent | c5459f9ba0e8b3568a34788bfd596f5f6be9fca2 (diff) | |
parent | e38c706e55c3b3df644ec4c04ae703df73ac044e (diff) | |
download | otp-e6b5ae09d292ee0251aab875be1d3245f260b493.tar.gz otp-e6b5ae09d292ee0251aab875be1d3245f260b493.tar.bz2 otp-e6b5ae09d292ee0251aab875be1d3245f260b493.zip |
Merge branch 'msassak/empty-pattern-badarg/OTP-11350' into maint
* msassak/empty-pattern-badarg/OTP-11350:
stdlib: extended binary_module_SUITE to assure badarg for OTP-11350
Check all pattern arguments passed to binary:matches/2
-rw-r--r-- | erts/emulator/beam/erl_bif_binary.c | 3 | ||||
-rw-r--r-- | lib/stdlib/test/binary_module_SUITE.erl | 4 |
2 files changed, 7 insertions, 0 deletions
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); } diff --git a/lib/stdlib/test/binary_module_SUITE.erl b/lib/stdlib/test/binary_module_SUITE.erl index 9b6f628aa9..00fb20489b 100644 --- a/lib/stdlib/test/binary_module_SUITE.erl +++ b/lib/stdlib/test/binary_module_SUITE.erl @@ -249,6 +249,10 @@ badargs(Config) when is_list(Config) -> binary:matches(<<1,2,3>>, {ac,ets:match_spec_compile([{'_',[],['$_']}])}, [{scope,{0,1}}])), + %% OTP-11350 + badarg = ?MASK_ERROR( + binary:matches(<<"foo">>, + [<<>>, <<"f">>])), ?line badarg = ?MASK_ERROR(binary:longest_common_prefix( [<<0:10000,1,2,4,1:3>>, |