Repository: wicket Updated Branches: refs/heads/wicket-6.x 996e17c3c -> 5119db308
checking repository file name for null bytes Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/5119db30 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/5119db30 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/5119db30 Branch: refs/heads/wicket-6.x Commit: 5119db30872c917a6480a84c85483fe9d5322619 Parents: 996e17c Author: Pedro Henrique Oliveira dos Santos <[email protected]> Authored: Wed Aug 10 03:56:21 2016 -0300 Committer: Pedro Henrique Oliveira dos Santos <[email protected]> Committed: Wed Aug 10 03:56:21 2016 -0300 ---------------------------------------------------------------------- .../java/org/apache/wicket/util/io/Streams.java | 36 ++++++++++++++++++++ .../apache/wicket/util/upload/DiskFileItem.java | 4 +++ 2 files changed, 40 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/5119db30/wicket-util/src/main/java/org/apache/wicket/util/io/Streams.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/main/java/org/apache/wicket/util/io/Streams.java b/wicket-util/src/main/java/org/apache/wicket/util/io/Streams.java index 131f5fc..f2fc907 100644 --- a/wicket-util/src/main/java/org/apache/wicket/util/io/Streams.java +++ b/wicket-util/src/main/java/org/apache/wicket/util/io/Streams.java @@ -24,6 +24,7 @@ import java.io.OutputStream; import java.io.Reader; import java.net.URL; import java.net.URLConnection; +import java.security.InvalidParameterException; import java.util.Properties; import org.apache.wicket.util.lang.Args; @@ -205,6 +206,41 @@ public final class Streams } /** + * Checks, whether the given file name is valid in the sense, that it + * doesn't contain any NUL characters. If the file name is valid, it will be + * returned without any modifications. Otherwise, an + * {@link InvalidFileNameException} is raised. + * + * @param fileName + * The file name to check + * @return Unmodified file name, if valid. + * @throws InvalidFileNameException + * The file name was found to be invalid. + */ + public static String checkFileName(String fileName) + { + if (fileName != null && fileName.indexOf('\u0000') != -1) + { + final StringBuilder sb = new StringBuilder(); + for (int i = 0; i < fileName.length(); i++) + { + char c = fileName.charAt(i); + switch (c) + { + case 0 : + sb.append("\\0"); + break; + default : + sb.append(c); + break; + } + } + throw new InvalidParameterException("Invalid file name: " + sb); + } + return fileName; + } + + /** * Private to prevent instantiation. */ private Streams() http://git-wip-us.apache.org/repos/asf/wicket/blob/5119db30/wicket-util/src/main/java/org/apache/wicket/util/upload/DiskFileItem.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/main/java/org/apache/wicket/util/upload/DiskFileItem.java b/wicket-util/src/main/java/org/apache/wicket/util/upload/DiskFileItem.java index b7dfabe..e95c672 100644 --- a/wicket-util/src/main/java/org/apache/wicket/util/upload/DiskFileItem.java +++ b/wicket-util/src/main/java/org/apache/wicket/util/upload/DiskFileItem.java @@ -617,6 +617,10 @@ public class DiskFileItem implements FileItem, FileItemHeadersSupport File tempDir = repository; if (tempDir == null) { + if (repository != null) + { + Streams.checkFileName(repository.getPath()); + } String systemTmp = null; try {
