Don't crash while parsing ignore patterns
Catch unexpected PatternSyntaxException and convert it to InvalidPatternException. Log such errors, do not silently ignore them. Bug: 463581 Change-Id: Id0936d9816769ec0cfae1898beda0f7a3c146e67 Signed-off-by: Andrey Loskutov <loskutov@gmx.de> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
parent
08641ea413
commit
b98c84eb88
|
@ -328,6 +328,7 @@ invalidId=Invalid id: {0}
|
||||||
invalidId0=Invalid id
|
invalidId0=Invalid id
|
||||||
invalidIdLength=Invalid id length {0}; should be {1}
|
invalidIdLength=Invalid id length {0}; should be {1}
|
||||||
invalidIgnoreParamSubmodule=Found invalid ignore param for submodule {0}.
|
invalidIgnoreParamSubmodule=Found invalid ignore param for submodule {0}.
|
||||||
|
invalidIgnoreRule=Exception caught while parsing ignore rule ''{0}''.
|
||||||
invalidIntegerValue=Invalid integer value: {0}.{1}={2}
|
invalidIntegerValue=Invalid integer value: {0}.{1}={2}
|
||||||
invalidKey=Invalid key: {0}
|
invalidKey=Invalid key: {0}
|
||||||
invalidLineInConfigFile=Invalid line in config file
|
invalidLineInConfigFile=Invalid line in config file
|
||||||
|
|
|
@ -47,6 +47,8 @@
|
||||||
import org.eclipse.jgit.errors.InvalidPatternException;
|
import org.eclipse.jgit.errors.InvalidPatternException;
|
||||||
import org.eclipse.jgit.ignore.internal.IMatcher;
|
import org.eclipse.jgit.ignore.internal.IMatcher;
|
||||||
import org.eclipse.jgit.ignore.internal.PathMatcher;
|
import org.eclipse.jgit.ignore.internal.PathMatcher;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* "Fast" (compared with IgnoreRule) git ignore rule implementation supporting
|
* "Fast" (compared with IgnoreRule) git ignore rule implementation supporting
|
||||||
|
@ -57,6 +59,8 @@
|
||||||
* @since 3.6
|
* @since 3.6
|
||||||
*/
|
*/
|
||||||
public class FastIgnoreRule {
|
public class FastIgnoreRule {
|
||||||
|
private final static Logger LOG = LoggerFactory
|
||||||
|
.getLogger(FastIgnoreRule.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Character used as default path separator for ignore entries
|
* Character used as default path separator for ignore entries
|
||||||
|
@ -121,6 +125,7 @@ public FastIgnoreRule(String pattern) {
|
||||||
Character.valueOf(PATH_SEPARATOR), dirOnly);
|
Character.valueOf(PATH_SEPARATOR), dirOnly);
|
||||||
} catch (InvalidPatternException e) {
|
} catch (InvalidPatternException e) {
|
||||||
m = NO_MATCH;
|
m = NO_MATCH;
|
||||||
|
LOG.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
this.matcher = m;
|
this.matcher = m;
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,13 +44,16 @@
|
||||||
|
|
||||||
import static java.lang.Character.isLetter;
|
import static java.lang.Character.isLetter;
|
||||||
|
|
||||||
|
import java.text.MessageFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
import java.util.regex.PatternSyntaxException;
|
||||||
|
|
||||||
import org.eclipse.jgit.errors.InvalidPatternException;
|
import org.eclipse.jgit.errors.InvalidPatternException;
|
||||||
import org.eclipse.jgit.ignore.FastIgnoreRule;
|
import org.eclipse.jgit.ignore.FastIgnoreRule;
|
||||||
|
import org.eclipse.jgit.internal.JGitText;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Various {@link String} related utility methods, written mostly to avoid
|
* Various {@link String} related utility methods, written mostly to avoid
|
||||||
|
@ -367,7 +370,16 @@ && isLetter(lookAhead(pattern, i)))
|
||||||
|
|
||||||
if (in_brackets > 0)
|
if (in_brackets > 0)
|
||||||
throw new InvalidPatternException("Not closed bracket?", pattern); //$NON-NLS-1$
|
throw new InvalidPatternException("Not closed bracket?", pattern); //$NON-NLS-1$
|
||||||
|
try {
|
||||||
return Pattern.compile(sb.toString());
|
return Pattern.compile(sb.toString());
|
||||||
|
} catch (PatternSyntaxException e) {
|
||||||
|
InvalidPatternException patternException = new InvalidPatternException(
|
||||||
|
MessageFormat.format(JGitText.get().invalidIgnoreRule,
|
||||||
|
pattern),
|
||||||
|
pattern);
|
||||||
|
patternException.initCause(e);
|
||||||
|
throw patternException;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -387,6 +387,7 @@ public static JGitText get() {
|
||||||
/***/ public String invalidId0;
|
/***/ public String invalidId0;
|
||||||
/***/ public String invalidIdLength;
|
/***/ public String invalidIdLength;
|
||||||
/***/ public String invalidIgnoreParamSubmodule;
|
/***/ public String invalidIgnoreParamSubmodule;
|
||||||
|
/***/ public String invalidIgnoreRule;
|
||||||
/***/ public String invalidIntegerValue;
|
/***/ public String invalidIntegerValue;
|
||||||
/***/ public String invalidKey;
|
/***/ public String invalidKey;
|
||||||
/***/ public String invalidLineInConfigFile;
|
/***/ public String invalidLineInConfigFile;
|
||||||
|
|
Loading…
Reference in New Issue