Details
-
Type:
Bug
-
Status: Resolved (View Workflow)
-
Priority:
Critical
-
Resolution: Fixed
-
Component/s: confluence-publisher-plugin
-
Labels:None
-
Similar Issues:
Description
I found a second problem in the token matching logic of BetweenTokensEditor.java. The logic for finding the start token is:
final int start = content.indexOf(startMarkerToken) + startMarkerToken.length();
if (start < 0) {
// exception
}
However, as long as the startMarkerToken is defined, the sum of indexOf + length() will be non-negative whether the marker is found or not. If the marker length is 10, then the plugin will replace the page content starting from char 9 if the marker is not found, corrupting the page.
Obviously, the code should check whether indexOf(startMarkerToken) < 0, instead of checking the sum.
Code changed in jenkins
User: Joe Hansche
Path:
.classpath
pom.xml
src/main/java/com/myyearbook/hudson/plugins/confluence/wiki/editors/BetweenTokensEditor.java
src/test/java/com/myyearbook/hudson/plugins/confluence/wiki/editors/BetweenTokensEditorTest.java
http://jenkins-ci.org/commit/confluence-publisher-plugin/2aa0a59ff18c82a0fb914e5498651f23aa557502
Log:
[Fix JENKINS-14205] Fix logic error checking for start token.
If the start token is configured, but does not exist in the content,
the check for the start token's existence would fail, causing the content
to become corrupt.