From 521353bf77db6d470cfc50514a8241e1243e8c74 Mon Sep 17 00:00:00 2001 From: Simon MacMullen Date: Tue, 12 Nov 2013 10:02:04 +0000 Subject: Use xmerl rather than maintain our own UTF-8 validator. --- src/rabbit_binary_parser.erl | 37 +++++++------------------------------ 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/src/rabbit_binary_parser.erl b/src/rabbit_binary_parser.erl index fbd2da4a..088ad0e5 100644 --- a/src/rabbit_binary_parser.erl +++ b/src/rabbit_binary_parser.erl @@ -110,33 +110,10 @@ assert_utf8(B) -> frame_error, "Malformed UTF-8 in shortstr", []) end. -validate_utf8(<>) when C < 16#80 -> - %% Plain Ascii character. - validate_utf8(Cs); -validate_utf8(<>) when C1 band 16#E0 =:= 16#C0, - C2 band 16#C0 =:= 16#80 -> - case ((C1 band 16#1F) bsl 6) bor (C2 band 16#3F) of - C when 16#80 =< C -> validate_utf8(Cs); - _ -> error - end; -validate_utf8(<>) when C1 band 16#F0 =:= 16#E0, - C2 band 16#C0 =:= 16#80, - C3 band 16#C0 =:= 16#80 -> - case ((((C1 band 16#0F) bsl 6) bor (C2 band 16#3F)) bsl 6) bor - (C3 band 16#3F) of - C when 16#800 =< C -> validate_utf8(Cs); - _ -> error - end; -validate_utf8(<>) when C1 band 16#F8 =:= 16#F0, - C2 band 16#C0 =:= 16#80, - C3 band 16#C0 =:= 16#80, - C4 band 16#C0 =:= 16#80 -> - case ((((((C1 band 16#0F) bsl 6) bor (C2 band 16#3F)) bsl 6) bor - (C3 band 16#3F)) bsl 6) bor (C4 band 16#3F) of - C when 16#10000 =< C -> validate_utf8(Cs); - _ -> error - end; -validate_utf8(<<>>) -> - ok; -validate_utf8(_) -> - error. +validate_utf8(Bin) -> + try + xmerl_ucs:from_utf8(Bin), + ok + catch exit:{ucs, _} -> + error + end. -- cgit v1.2.1