This is an automated email from the ASF dual-hosted git repository.
jleroux pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 54c6010 Improved: Fix some bugs Spotbugs reports (OFBIZ-12386)
54c6010 is described below
commit 54c6010c3b6d9d43f72667412903a29eb4f26ee6
Author: Jacques Le Roux <[email protected]>
AuthorDate: Thu Dec 9 19:23:30 2021 +0100
Improved: Fix some bugs Spotbugs reports (OFBIZ-12386)
In SecuredUpload::isValidFile fixes a possible null dereferencement
---
.../org/apache/ofbiz/security/SecuredUpload.java | 46 +++++++++++-----------
1 file changed, 24 insertions(+), 22 deletions(-)
diff --git
a/framework/security/src/main/java/org/apache/ofbiz/security/SecuredUpload.java
b/framework/security/src/main/java/org/apache/ofbiz/security/SecuredUpload.java
index 05f784d..8e395b5 100644
---
a/framework/security/src/main/java/org/apache/ofbiz/security/SecuredUpload.java
+++
b/framework/security/src/main/java/org/apache/ofbiz/security/SecuredUpload.java
@@ -114,34 +114,36 @@ public class SecuredUpload {
String imageServerUrl =
EntityUtilProperties.getPropertyValue("catalog", "image.management.url",
delegator);
Path p = Paths.get(fileToCheck);
- String fileName = p.getFileName().toString(); // The file name is the
farthest element from the root in the directory hierarchy.
boolean wrongFile = true;
+ if (p != null) {
+ String fileName = p.getFileName().toString(); // The file name is
the farthest element from the root in the directory hierarchy.
+ if
(DENIEDFILEEXTENSIONS.contains(FilenameUtils.getExtension(fileToCheck))) {
+ Debug.logError("This file extension is not allowed for
security reason", MODULE);
+ deleteBadFile(fileToCheck);
+ return false;
+ }
- if
(DENIEDFILEEXTENSIONS.contains(FilenameUtils.getExtension(fileToCheck))) {
- Debug.logError("This file extension is not allowed for security
reason", MODULE);
- deleteBadFile(fileToCheck);
- return false;
- }
-
- if (org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS) {
- if (fileToCheck.length() > 259) { // More about that:
https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation
- Debug.logError("Uploaded file name too long", MODULE);
- } else if (p.toString().contains(imageServerUrl.replaceAll("/",
"\\\\"))) {
- if (fileName.matches("[a-zA-Z0-9-_ ()]{1,249}.[a-zA-Z0-9-_
]{1,10}")) { // "(" and ")" for duplicates files
+ if (org.apache.commons.lang3.SystemUtils.IS_OS_WINDOWS) {
+ // More about that:
https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation
+ if (fileToCheck.length() > 259) {
+ Debug.logError("Uploaded file name too long", MODULE);
+ } else if
(p.toString().contains(imageServerUrl.replaceAll("/", "\\\\"))) {
+ if (fileName.matches("[a-zA-Z0-9-_ ()]{1,249}.[a-zA-Z0-9-_
]{1,10}")) { // "(" and ")" for duplicates files
+ wrongFile = false;
+ }
+ } else if (fileName.matches("[a-zA-Z0-9-_
]{1,249}.[a-zA-Z0-9-_ ]{1,10}")) {
wrongFile = false;
}
- } else if (fileName.matches("[a-zA-Z0-9-_ ]{1,249}.[a-zA-Z0-9-_
]{1,10}")) {
- wrongFile = false;
- }
- } else { // Suppose a *nix system
- if (fileToCheck.length() > 4096) {
- Debug.logError("Uploaded file name too long", MODULE);
- } else if (p.toString().contains(imageServerUrl)) {
- if (fileName.matches("[a-zA-Z0-9-_ ()]{1,4086}.[a-zA-Z0-9-_
]{1,10}")) { // "(" and ")" for duplicates files
+ } else { // Suppose a *nix system
+ if (fileToCheck.length() > 4096) {
+ Debug.logError("Uploaded file name too long", MODULE);
+ } else if (p.toString().contains(imageServerUrl)) {
+ if (fileName.matches("[a-zA-Z0-9-_
()]{1,4086}.[a-zA-Z0-9-_ ]{1,10}")) { // "(" and ")" for duplicates files
+ wrongFile = false;
+ }
+ } else if (fileName.matches("[a-zA-Z0-9-_
]{1,4086}.[a-zA-Z0-9-_ ]{1,10}")) {
wrongFile = false;
}
- } else if (fileName.matches("[a-zA-Z0-9-_ ]{1,4086}.[a-zA-Z0-9-_
]{1,10}")) {
- wrongFile = false;
}
}