File 0563-xmerl-Fix-parse-bug-when-checking-the-character-enco.patch of Package erlang

From f7ee340593a7e69eb37f9f52b903a19d65e6b22e Mon Sep 17 00:00:00 2001
From: Lars Thorsen <lars@erlang.org>
Date: Wed, 15 May 2019 09:50:16 +0200
Subject: [PATCH] [xmerl] Fix parse bug when checking the character encoding

The parser chrashed when an endmarker was missing when parsing
attribute values during the character encoding check.
---
 lib/xmerl/src/xmerl_sax_parser.erl | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/lib/xmerl/src/xmerl_sax_parser.erl b/lib/xmerl/src/xmerl_sax_parser.erl
index fe836fd8cd..2767d02552 100644
--- a/lib/xmerl/src/xmerl_sax_parser.erl
+++ b/lib/xmerl/src/xmerl_sax_parser.erl
@@ -369,8 +369,8 @@ parse_eq(_, State) ->
 %%----------------------------------------------------------------------
 parse_value(<<C, Rest/binary>>, State) when ?is_whitespace(C) ->
     parse_value(Rest, State);
-parse_value(<<C, Rest/binary>>, _State) when C == $'; C == $" ->
-    parse_value_1(Rest, C, []);
+parse_value(<<C, Rest/binary>>, State) when C == $'; C == $" ->
+    parse_value_1(Rest, C, [], State);
 parse_value(_, State) ->
     ?fatal_error(State, "\', \" or whitespace expected").
 
@@ -383,10 +383,12 @@ parse_value(_, State) ->
 %%          Rest = binary()
 %% Description: Parsing an attribute value from the stream.
 %%----------------------------------------------------------------------
-parse_value_1(<<Stop, Rest/binary>>, Stop, Acc) ->
+parse_value_1(<<Stop, Rest/binary>>, Stop, Acc, _State) ->
     {lists:reverse(Acc), Rest};
-parse_value_1(<<C, Rest/binary>>, Stop, Acc) ->
-    parse_value_1(Rest, Stop, [C |Acc]).
+parse_value_1(<<C, Rest/binary>>, Stop, Acc, State) ->
+    parse_value_1(Rest, Stop, [C |Acc], State);
+parse_value_1(_, _Stop, _Acc, State) ->
+    ?fatal_error(State, "end of input and no \' or \" found").
 
 %%======================================================================
 %% Default functions
-- 
2.16.4

openSUSE Build Service is sponsored by