From 0ba580e9e3d91f7402ac4cd4872a10627997eda8 Mon Sep 17 00:00:00 2001 From: Chris Nauroth Date: Tue, 6 May 2014 16:50:28 +0000 Subject: [PATCH] HADOOP-10541. InputStream in MiniKdc#initKDCServer for minikdc.ldiff is not closed. Contributed by Swarnim Kulkarni. git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1592803 13f79535-47bb-0310-9956-ffa450edef68 --- .../hadoop-common/CHANGES.txt | 3 ++ .../org/apache/hadoop/minikdc/MiniKdc.java | 37 +++++++++++++------ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 75ef0bbef58..957ac232af7 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -443,6 +443,9 @@ Release 2.5.0 - UNRELEASED HADOOP-10568. Add s3 server-side encryption. (David S. Wang via atm) + HADOOP-10541. InputStream in MiniKdc#initKDCServer for minikdc.ldiff is not + closed. (Swarnim Kulkarni via cnauroth) + Release 2.4.1 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java b/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java index 7dc082b107b..33ff1bb9c22 100644 --- a/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java +++ b/hadoop-common-project/hadoop-minikdc/src/main/java/org/apache/hadoop/minikdc/MiniKdc.java @@ -393,18 +393,22 @@ public class MiniKdc { map.put("4", bindAddress); ClassLoader cl = Thread.currentThread().getContextClassLoader(); - InputStream is = cl.getResourceAsStream("minikdc.ldiff"); + InputStream is1 = cl.getResourceAsStream("minikdc.ldiff"); SchemaManager schemaManager = ds.getSchemaManager(); - final String content = StrSubstitutor.replace(IOUtils.toString(is), map); - LdifReader reader = new LdifReader(new StringReader(content)); + LdifReader reader = null; + try { + final String content = StrSubstitutor.replace(IOUtils.toString(is1), map); + reader = new LdifReader(new StringReader(content)); + for (LdifEntry ldifEntry : reader) { ds.getAdminSession().add(new DefaultEntry(schemaManager, ldifEntry.getEntry())); } } finally { - reader.close(); + IOUtils.closeQuietly(reader); + IOUtils.closeQuietly(is1); } kdc = new KdcServer(); @@ -429,14 +433,23 @@ public class MiniKdc { kdc.start(); StringBuilder sb = new StringBuilder(); - is = cl.getResourceAsStream("minikdc-krb5.conf"); - BufferedReader r = new BufferedReader(new InputStreamReader(is)); - String line = r.readLine(); - while (line != null) { - sb.append(line).append("{3}"); - line = r.readLine(); + InputStream is2 = cl.getResourceAsStream("minikdc-krb5.conf"); + + BufferedReader r = null; + + try { + r = new BufferedReader(new InputStreamReader(is2)); + String line = r.readLine(); + + while (line != null) { + sb.append(line).append("{3}"); + line = r.readLine(); + } + } finally { + IOUtils.closeQuietly(r); + IOUtils.closeQuietly(is2); } - r.close(); + krb5conf = new File(workDir, "krb5.conf").getAbsoluteFile(); FileUtils.writeStringToFile(krb5conf, MessageFormat.format(sb.toString(), getRealm(), getHost(), @@ -555,4 +568,4 @@ public class MiniKdc { keytab.setEntries(entries); keytab.write(keytabFile); } -} \ No newline at end of file +}