From 00bd670861d465a52e24a607e249383dd267a155 Mon Sep 17 00:00:00 2001
From: Judit Knoll <123470644+JuditKnoll@users.noreply.github.com>
Date: Thu, 9 Nov 2023 02:05:05 +0100
Subject: [PATCH 1/4] Fix small grammar mistakes in messages.xml (#2690)
---
spotbugs/etc/messages.xml | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/spotbugs/etc/messages.xml b/spotbugs/etc/messages.xml
index 3d0d051e374..4047e1d90a6 100644
--- a/spotbugs/etc/messages.xml
+++ b/spotbugs/etc/messages.xml
@@ -2027,7 +2027,7 @@ While ScheduledThreadPoolExecutor inherits from ThreadPoolExecutor, a few of the
This code constructs an HTTP Cookie using an untrusted HTTP parameter. If this cookie is added to an HTTP response, it will allow an HTTP response splitting
vulnerability. See http://en.wikipedia.org/wiki/HTTP_response_splitting
for more information. SpotBugs looks only for the most blatant, obvious cases of HTTP response splitting.
@@ -2044,7 +2044,7 @@ consider using a commercial static analysis or pen-testing tool.
This code directly writes an HTTP parameter to an HTTP header, which allows for an HTTP response splitting
vulnerability. See http://en.wikipedia.org/wiki/HTTP_response_splitting
for more information. SpotBugs looks only for the most blatant, obvious cases of HTTP response splitting.
@@ -3770,7 +3770,7 @@ Thus, having a mutable instance field generally creates race conditions.
This code seems to be using non-short-circuit logic (e.g., &
or |)
rather than short-circuit logic (&& or ||). In addition,
-it seem possible that, depending on the value of the left hand side, you might not
+it seems possible that, depending on the value of the left hand side, you might not
want to evaluate the right hand side (because it would have side effects, could cause an exception
or could be expensive.
@@ -3831,7 +3831,7 @@ Language Specification for details.
will only give up one lock and the notify will be unable to get both locks,
and thus the notify will not succeed.
If there is also a warning about a two lock wait, the
- probably of a bug is quite high.
+ probability of a bug is quite high.
This code calls a method and ignores the return value. However, our analysis shows that
the method (including its implementations in subclasses if any) does not produce any effect
-other than return value. Thus this call can be removed.
+other than return value. Thus, this call can be removed.
We are trying to reduce the false positives as much as possible, but in some cases this warning might be wrong.
Common false-positive cases include: This method calls equals(Object) on two references of different
class types and analysis suggests they will be to objects of different classes
at runtime. Further, examination of the equals methods that would be invoked suggest that either
-this call will always return false, or else the equals method is not be symmetric (which is
+this call will always return false, or else the equals method is not symmetric (which is
a property required by the contract
for equals in class Object).
foo(17)
, which is defined in both a superclass and in an outer method.
By the Java semantics,
it will be resolved to invoke the inherited method, but this may not be what
@@ -5090,7 +5090,7 @@ dereferencing this value will generate a null pointer exception.
This field is never initialized within any constructor, and is therefore could be null after
the object is constructed. Elsewhere, it is loaded and dereferenced without a null check.
-This could be a either an error or a questionable design, since
+This could be either an error or a questionable design, since
it means a null pointer exception will be generated if that field is dereferenced
before being initialized.
==
.
Assertions must not be used to validate arguments of public methods because the validations are not performed if assertions are disabled.
From 95f17542e43dc56cccfdfc7e82ac64e9ac95a55a Mon Sep 17 00:00:00 2001
From: Guillaume Toison <86775455+gtoison@users.noreply.github.com>
Date: Sat, 11 Nov 2023 02:05:54 +0100
Subject: [PATCH 2/4] Use java.nio to load filter files (#2684)
* test: load a filter with non-ascii characters in file name
* Use java.nio to load filter files
java.io.FileInputStream seems to be running into issues when trying to
load files with non-ascii charatecter in the file name.
Other similar issues point to this happening on a Mac, so it might be
dependent on the combination of OS/JDK version/user settings
Originally reported here:
https://github.com/JetBrains/spotbugs-intellij-plugin/issues/1492
---
CHANGELOG.md | 1 +
.../filter/Utf8FilterFileNameTest.java | 52 +++++++++++++++++++
.../edu/umd/cs/findbugs/filter/Filter.java | 7 ++-
3 files changed, 58 insertions(+), 2 deletions(-)
create mode 100644 spotbugs-tests/src/test/java/edu/umd/cs/findbugs/filter/Utf8FilterFileNameTest.java
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9c9dc898d7e..c53b1a6314c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ Currently the versioning policy of this project follows [Semantic Versioning v2.
### Fixed
- Fixed false positive UPM_UNCALLED_PRIVATE_METHOD for method used in JUnit's MethodSource ([[#2379](https://github.com/spotbugs/spotbugs/issues/2379)])
+- Use java.nio to load filter files ([[#2684](https://github.com/spotbugs/spotbugs/pull/2684)])
- tbd
diff --git a/spotbugs-tests/src/test/java/edu/umd/cs/findbugs/filter/Utf8FilterFileNameTest.java b/spotbugs-tests/src/test/java/edu/umd/cs/findbugs/filter/Utf8FilterFileNameTest.java
new file mode 100644
index 00000000000..544b09ef2b9
--- /dev/null
+++ b/spotbugs-tests/src/test/java/edu/umd/cs/findbugs/filter/Utf8FilterFileNameTest.java
@@ -0,0 +1,52 @@
+/*
+ * Contributions to SpotBugs
+ * Copyright (C) 2023, the SpotBugs authors
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+package edu.umd.cs.findbugs.filter;
+
+import static org.junit.jupiter.api.Assertions.fail;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+
+/**
+ * @author gtoison
+ */
+class Utf8FilterFileNameTest {
+ @TempDir
+ private Path folderPath;
+
+ @Test
+ void loadFilter() {
+ Path filterPath = folderPath.resolve("äéàùçæð.xml");
+
+ try {
+ Files.createFile(filterPath);
+ Files.writeString(filterPath, "