DIRKRB-613 Tests fails on systems with includedir in /etc/krb5.conf.
diff --git a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/Krb5Parser.java b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/Krb5Parser.java
index 9f4196c..2a72add 100644
--- a/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/Krb5Parser.java
+++ b/kerby-kerb/kerb-common/src/main/java/org/apache/kerby/kerberos/kerb/common/Krb5Parser.java
@@ -68,7 +68,15 @@
} else if (line.startsWith("[")) {
insertSections(line, br, items);
originLine = br.readLine();
- } else {
+ } else if (line.startsWith("include")) {
+ String[] splited = line.trim().split("\\s+");
+ if (splited.length == 2) {
+ items.put(splited[0], splited[1]);
+ } else {
+ throw new RuntimeException("Unable to parse:" + originLine);
+ }
+ originLine = br.readLine();
+ } else {
throw new RuntimeException("Unable to parse:" + originLine);
}
}
@@ -105,6 +113,9 @@
for (Map.Entry<String, Object> item : items.entrySet()) {
if (item.getKey().equals(sectionName)) {
value = item.getValue();
+ if (keys.length == 0) {
+ return value;
+ }
Map<String, Object> map = (Map) item.getValue();
for (Map.Entry<String, Object> entry : map.entrySet()) {
if (entry.getKey().equals(keys[0])) {
diff --git a/kerby-kerb/kerb-common/src/test/java/org/apache/kerby/kerberos/kerb/Krb5ParserTest.java b/kerby-kerb/kerb-common/src/test/java/org/apache/kerby/kerberos/kerb/Krb5ParserTest.java
index fb09722..89e5fab 100644
--- a/kerby-kerb/kerb-common/src/test/java/org/apache/kerby/kerberos/kerb/Krb5ParserTest.java
+++ b/kerby-kerb/kerb-common/src/test/java/org/apache/kerby/kerberos/kerb/Krb5ParserTest.java
@@ -42,8 +42,10 @@
Krb5Parser k = new Krb5Parser(new File(url.getFile()));
k.load();
- assertThat(k.getSections().size()).isEqualTo(4);
+ assertThat(k.getSections().size()).isEqualTo(5);
assertThat(k.getSections().contains("libdefaults")).isTrue();
+ assertThat(k.getSections().contains("include")).isTrue();
+ assertThat(k.getSection("include")).isEqualTo("/etc");
assertThat(k.getSection("libdefaults", "dns_lookup_kdc")).isEqualTo("false");
assertThat(k.getSection("realms", "ATHENA.MIT.EDU") instanceof Map).isTrue();
diff --git a/kerby-kerb/kerb-common/src/test/resources/krb5.conf b/kerby-kerb/kerb-common/src/test/resources/krb5.conf
index 1a5b35e..43c62e2 100644
--- a/kerby-kerb/kerb-common/src/test/resources/krb5.conf
+++ b/kerby-kerb/kerb-common/src/test/resources/krb5.conf
@@ -15,6 +15,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+include /etc
[libdefaults]
default_realm = KRB.COM
kdc_host = kdc-server.example.com