Merge "Sanitise configuration values"
diff --git a/src/main/java/com/googlesource/gerrit/plugins/validators/CommitMessageLengthValidation.java b/src/main/java/com/googlesource/gerrit/plugins/validators/CommitMessageLengthValidation.java
index d5d0f4c..96dd89e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/validators/CommitMessageLengthValidation.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/validators/CommitMessageLengthValidation.java
@@ -52,20 +52,21 @@
public CommitMessageLengthValidation(@GerritServerConfig Config gerritConfig)
{
this.config = gerritConfig;
- this.maxSubjectLength = config.getInt(
- COMMIT_MESSAGE_SECTION, null,
+ this.maxSubjectLength = nonNegativeInt(
MAX_SUBJECT_LENGTH_KEY, DEFAULT_MAX_SUBJECT_LENGTH);
- this.maxLineLength = config.getInt(
- COMMIT_MESSAGE_SECTION, null,
+ this.maxLineLength = nonNegativeInt(
MAX_LINE_LENGTH_KEY, DEFAULT_MAX_LINE_LENGTH);
this.rejectTooLong = config.getBoolean(
- COMMIT_MESSAGE_SECTION, REJECT_TOO_LONG_KEY,
- DEFAULT_REJECT_TOO_LONG);
- this.longLinesThreshold = config.getInt(
- COMMIT_MESSAGE_SECTION, null,
+ COMMIT_MESSAGE_SECTION, REJECT_TOO_LONG_KEY, DEFAULT_REJECT_TOO_LONG);
+ this.longLinesThreshold = nonNegativeInt(
LONG_LINES_THRESHOLD_KEY, DEFAULT_LONG_LINES_THRESHOLD);
}
+ private int nonNegativeInt(String name, int defaultValue) {
+ int value = this.config.getInt(COMMIT_MESSAGE_SECTION, null, name, defaultValue);
+ return value >= 0 ? value : defaultValue;
+ }
+
private void onLineTooLong(final AbbreviatedObjectId id,
List<CommitValidationMessage> messagesList, final String errorMessage)
throws CommitValidationException {
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 0bf0c9b..b33ce93 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -5,17 +5,17 @@
configured in the standard Gerrit config file `gerrit.config`.
commitmessage.maxSubjectLength
-: Maximum length of the commit message's subject line. If
- not specified, defaults to 65.
+: Maximum length of the commit message's subject line. Defaults
+ to 65 if not specified or less than 0.
commitmessage.maxLineLength
-: Maximum length of a line in the commit message's body. If
- not specified, defaults to 70.
+: Maximum length of a line in the commit message's body. Defaults
+ to 70 if not specified or less than 0.
commitmessage.longLinesThreshold
: Percentage of commit message lines allowed to exceed the
- maximum length before a warning or error is generated. If
- not specified, defaults to 33.
+ maximum length before a warning or error is generated. Defaults
+ to 33 if not specified or less than 0.
commitmessage.rejectTooLong
: If set to `true`, reject commits whose subject or line