From df550007fe30a0f9ac0a650b8587932848e70d33 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Wed, 15 May 2013 15:49:58 -0400 Subject: [PATCH] Close file descriptor leak (issue-199) --- src/main/java/com/gitblit/GitBlit.java | 23 +++++++++++++++++++---- 1 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java index 93293d8..f017d21 100644 --- a/src/main/java/com/gitblit/GitBlit.java +++ b/src/main/java/com/gitblit/GitBlit.java @@ -3509,6 +3509,8 @@ // extract the resource to the directory if it does not exist File f = new File(toDir, resource.substring(path.length())); if (!f.exists()) { + InputStream is = null; + OutputStream os = null; try { if (resource.charAt(resource.length() - 1) == '/') { // directory @@ -3517,20 +3519,33 @@ } else { // file f.getParentFile().mkdirs(); - InputStream is = context.getResourceAsStream(resource); - OutputStream os = new FileOutputStream(f); + is = context.getResourceAsStream(resource); + os = new FileOutputStream(f); byte [] buffer = new byte[4096]; int len = 0; while ((len = is.read(buffer)) > -1) { os.write(buffer, 0, len); } - is.close(); - os.close(); } } catch (FileNotFoundException e) { logger.error("Failed to find resource \"" + resource + "\"", e); } catch (IOException e) { logger.error("Failed to copy resource \"" + resource + "\" to " + f, e); + } finally { + if (is != null) { + try { + is.close(); + } catch (IOException e) { + // ignore + } + } + if (os != null) { + try { + os.close(); + } catch (IOException e) { + // ignore + } + } } } } -- Gitblit v1.9.1