From 6ac05e50a77cc8ebcf335fd9d6908efc74e3e201 Mon Sep 17 00:00:00 2001 From: Taylor Venable Date: Tue, 1 Feb 2011 18:52:10 -0500 Subject: Fix infinite loop for malformed edoc input When processing an edoc comment with ``` in it, if the comment ends without a matching ''' then an infinite loop occurs in the function edoc_wiki:strip_empty_lines/2. This change fixes that by adding a clause to return from the function upon the end of the comment input. This allows an error to be thrown to indicate the problem, which is the same behaviour as leaving either `` or ` unmatched. --- lib/edoc/src/edoc_wiki.erl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/edoc/src/edoc_wiki.erl b/lib/edoc/src/edoc_wiki.erl index e4a3d74734..6f269996c8 100644 --- a/lib/edoc/src/edoc_wiki.erl +++ b/lib/edoc/src/edoc_wiki.erl @@ -295,6 +295,8 @@ push_uri(Us, Ss, As) -> strip_empty_lines(Cs) -> strip_empty_lines(Cs, 0). +strip_empty_lines([], N) -> + {[], N}; % reached the end of input strip_empty_lines(Cs, N) -> {Cs1, Cs2} = edoc_lib:split_at(Cs, $\n), case edoc_lib:is_space(Cs1) of -- cgit v1.2.3