diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BlobBasedConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BlobBasedConfig.java index 7d52991df..8958ce7e8 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BlobBasedConfig.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BlobBasedConfig.java @@ -80,8 +80,7 @@ public BlobBasedConfig(Config base, final byte[] blob) throws ConfigInvalidException { super(base); final String decoded; - if (blob.length >= 3 && blob[0] == (byte) 0xEF - && blob[1] == (byte) 0xBB && blob[2] == (byte) 0xBF) { + if (isUtf8(blob)) { decoded = RawParseUtils.decode(RawParseUtils.UTF8_CHARSET, blob, 3, blob.length); } else { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java index 088dcdfd0..567e31642 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java @@ -1108,6 +1108,19 @@ protected void clear() { state.set(newState()); } + /** + * Check if bytes should be treated as UTF-8 or not. + * + * @param bytes + * the bytes to check encoding for. + * @return true if bytes should be treated as UTF-8, false otherwise. + * @since 4.4 + */ + protected boolean isUtf8(final byte[] bytes) { + return bytes.length >= 3 && bytes[0] == (byte) 0xEF + && bytes[1] == (byte) 0xBB && bytes[2] == (byte) 0xBF; + } + private static String readSectionName(final StringReader in) throws ConfigInvalidException { final StringBuilder name = new StringBuilder(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java index 702fd7076..4b4822c76 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileBasedConfig.java @@ -147,8 +147,7 @@ public void load() throws IOException, ConfigInvalidException { snapshot = newSnapshot; } else { final String decoded; - if (in.length >= 3 && in[0] == (byte) 0xEF - && in[1] == (byte) 0xBB && in[2] == (byte) 0xBF) { + if (isUtf8(in)) { decoded = RawParseUtils.decode(RawParseUtils.UTF8_CHARSET, in, 3, in.length); utf8Bom = true;