You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Jochen Wiedmann (JIRA)" <ji...@apache.org> on 2009/01/18 02:40:59 UTC
[jira] Resolved: (FILEUPLOAD-160) disk leak if multipart parse
error
[ https://issues.apache.org/jira/browse/FILEUPLOAD-160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jochen Wiedmann resolved FILEUPLOAD-160.
----------------------------------------
Resolution: Fixed
Fix Version/s: 1.3
Assignee: Jochen Wiedmann
Applied, thank you!
> disk leak if multipart parse error
> ----------------------------------
>
> Key: FILEUPLOAD-160
> URL: https://issues.apache.org/jira/browse/FILEUPLOAD-160
> Project: Commons FileUpload
> Issue Type: Bug
> Reporter: Stepan Koltsov
> Assignee: Jochen Wiedmann
> Fix For: 1.3
>
>
> FleUploadBase.parseRequest() keeps files on disk if parser error occured. Patch
> {code}
> diff -r cf24bc636e09 -r f706d95f56b7 src/java/org/apache/commons/fileupload/FileUploadBase.java
> --- a/src/java/org/apache/commons/fileupload/FileUploadBase.java Wed May 28 22:25:00 2008 +0400
> +++ b/src/java/org/apache/commons/fileupload/FileUploadBase.java Thu May 29 15:40:04 2008 +0400
> @@ -345,9 +345,10 @@
> */
> public List /* FileItem */ parseRequest(RequestContext ctx)
> throws FileUploadException {
> + List items = new ArrayList();
> + boolean successful = false;
> try {
> FileItemIterator iter = getItemIterator(ctx);
> - List items = new ArrayList();
> FileItemFactory fac = getFileItemFactory();
> if (fac == null) {
> throw new NullPointerException(
> @@ -358,6 +359,7 @@
> FileItem fileItem = fac.createItem(item.getFieldName(),
> item.getContentType(), item.isFormField(),
> item.getName());
> + items.add(fileItem);
> try {
> Streams.copy(item.openStream(), fileItem.getOutputStream(),
> true);
> @@ -372,13 +374,24 @@
> final FileItemHeaders fih = item.getHeaders();
> ((FileItemHeadersSupport) fileItem).setHeaders(fih);
> }
> - items.add(fileItem);
> }
> + successful = true;
> return items;
> } catch (FileUploadIOException e) {
> throw (FileUploadException) e.getCause();
> } catch (IOException e) {
> throw new FileUploadException(e.getMessage(), e);
> + } finally {
> + if (!successful) {
> + for (Iterator iterator = items.iterator(); iterator.hasNext();) {
> + FileItem fileItem = (FileItem) iterator.next();
> + try {
> + fileItem.delete();
> + } catch (Throwable e) {
> + // ignore it
> + }
> + }
> + }
> }
> }
>
> {code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.