diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 71d96215231..9dbdb8bcab9 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -113,6 +113,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 @@ private void initKDCServer() throws Exception { 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 @@ private void initKDCServer() throws Exception { 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 void createPrincipal(File keytabFile, String ... principals) keytab.setEntries(entries); keytab.write(keytabFile); } -} \ No newline at end of file +}