Compare commits
No commits in common. "c8-stream-201902" and "c8s-stream-201902" have entirely different histories.
c8-stream-
...
c8s-stream
123
SOURCES/0001-Fix-NPE-in-MailHandler-JDK-8216363.patch
Normal file
123
SOURCES/0001-Fix-NPE-in-MailHandler-JDK-8216363.patch
Normal file
@ -0,0 +1,123 @@
|
||||
From 7e1c46bc8521540627e9a9d870743f282c87becb Mon Sep 17 00:00:00 2001
|
||||
From: Marian Koncek <mkoncek@redhat.com>
|
||||
Date: Thu, 2 Jul 2020 12:01:38 +0200
|
||||
Subject: [PATCH] Fix NPE in MailHandler-JDK-8216363
|
||||
|
||||
---
|
||||
.../sun/mail/util/logging/MailHandler.java | 11 +++-
|
||||
.../mail/util/logging/MailHandlerTest.java | 59 +++++++++++--------
|
||||
2 files changed, 44 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/mail/src/main/java/com/sun/mail/util/logging/MailHandler.java b/mail/src/main/java/com/sun/mail/util/logging/MailHandler.java
|
||||
index e6879ba..2021c99 100644
|
||||
--- a/mail/src/main/java/com/sun/mail/util/logging/MailHandler.java
|
||||
+++ b/mail/src/main/java/com/sun/mail/util/logging/MailHandler.java
|
||||
@@ -594,6 +594,9 @@ public class MailHandler extends Handler {
|
||||
*/
|
||||
@Override
|
||||
public boolean isLoggable(final LogRecord record) {
|
||||
+ if (record == null) { //JDK-8233979
|
||||
+ return false;
|
||||
+ }
|
||||
int levelValue = getLevel().intValue();
|
||||
if (record.getLevel().intValue() < levelValue || levelValue == offValue) {
|
||||
return false;
|
||||
@@ -634,8 +637,12 @@ public class MailHandler extends Handler {
|
||||
if (tryMutex()) {
|
||||
try {
|
||||
if (isLoggable(record)) {
|
||||
- record.getSourceMethodName(); //Infer caller.
|
||||
- publish0(record);
|
||||
+ if (record != null) {
|
||||
+ record.getSourceMethodName(); //Infer caller.
|
||||
+ publish0(record);
|
||||
+ } else { //Override of isLoggable is broken.
|
||||
+ reportNullError(ErrorManager.WRITE_FAILURE);
|
||||
+ }
|
||||
}
|
||||
} catch (final LinkageError JDK8152515) {
|
||||
reportLinkageError(JDK8152515, ErrorManager.WRITE_FAILURE);
|
||||
diff --git a/mail/src/test/java/com/sun/mail/util/logging/MailHandlerTest.java b/mail/src/test/java/com/sun/mail/util/logging/MailHandlerTest.java
|
||||
index 506b3d6..19541b7 100644
|
||||
--- a/mail/src/test/java/com/sun/mail/util/logging/MailHandlerTest.java
|
||||
+++ b/mail/src/test/java/com/sun/mail/util/logging/MailHandlerTest.java
|
||||
@@ -474,34 +474,15 @@ public class MailHandlerTest extends AbstractLogging {
|
||||
instance.setErrorManager(em);
|
||||
|
||||
instance.setLevel(lvl);
|
||||
- MemoryHandler mem = null;
|
||||
boolean result = false;
|
||||
boolean expect = true;
|
||||
- try {
|
||||
- result = instance.isLoggable(record);
|
||||
- mem = new MemoryHandler(new ConsoleHandler(), 100, Level.OFF);
|
||||
- mem.setErrorManager(em);
|
||||
- mem.setLevel(lvl);
|
||||
- expect = mem.isLoggable(record);
|
||||
- } catch (RuntimeException mailEx) {
|
||||
- try {
|
||||
- if (mem != null) {
|
||||
- fail("MemoryHandler threw and exception: " + mailEx);
|
||||
- } else {
|
||||
- mem = new MemoryHandler(new ConsoleHandler(), 100, Level.OFF);
|
||||
- mem.setErrorManager(em);
|
||||
- mem.setLevel(lvl);
|
||||
- expect = mem.isLoggable(record);
|
||||
- fail("MailHandler threw and exception: " + mailEx);
|
||||
- }
|
||||
- } catch (RuntimeException memEx) {
|
||||
- assertEquals(memEx.getClass(), mailEx.getClass());
|
||||
- result = false;
|
||||
- expect = false;
|
||||
- }
|
||||
+ if (record == null || record.getLevel().intValue() < lvl.intValue()
|
||||
+ || Level.OFF.intValue() == lvl.intValue()) {
|
||||
+ expect = false;
|
||||
}
|
||||
- assertEquals(expect, result);
|
||||
|
||||
+ result = instance.isLoggable(record);
|
||||
+ assertEquals(lvl.getName(), expect, result);
|
||||
instance.setLevel(Level.INFO);
|
||||
instance.setFilter(BooleanFilter.FALSE);
|
||||
instance.setAttachmentFormatters(
|
||||
@@ -643,6 +624,36 @@ public class MailHandlerTest extends AbstractLogging {
|
||||
instance.close();
|
||||
}
|
||||
|
||||
+ @Test
|
||||
+ public void testPublishNull() {
|
||||
+ MailHandler instance = new MailHandler();
|
||||
+ InternalErrorManager em = new InternalErrorManager();
|
||||
+ instance.setErrorManager(em);
|
||||
+ instance.setLevel(Level.ALL);
|
||||
+ instance.publish((LogRecord) null);
|
||||
+ instance.close();
|
||||
+ for (Throwable t : em.exceptions) {
|
||||
+ dump(t);
|
||||
+ }
|
||||
+ assertTrue(em.exceptions.isEmpty());
|
||||
+ }
|
||||
+
|
||||
+ @Test
|
||||
+ public void testPublishNullAsTrue() {
|
||||
+ MailHandler instance = new MailHandler() {
|
||||
+ public boolean isLoggable(LogRecord r) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ };
|
||||
+ InternalErrorManager em = new InternalErrorManager();
|
||||
+ instance.setErrorManager(em);
|
||||
+ instance.setLevel(Level.ALL);
|
||||
+ instance.publish((LogRecord) null);
|
||||
+ instance.close();
|
||||
+ assertEquals(true, em.exceptions.get(0) instanceof NullPointerException);
|
||||
+ assertEquals(1, em.exceptions.size());
|
||||
+ }
|
||||
+
|
||||
@Test
|
||||
public void testPublishLinkageError() throws Exception {
|
||||
testLinkageErrorWithStack("publish");
|
||||
--
|
||||
2.25.4
|
||||
|
||||
@ -9,6 +9,7 @@ BuildArch: noarch
|
||||
Source: https://github.com/javaee/javamail/archive/JAVAMAIL-1_6_2.tar.gz#/%{name}-%{version}.tar.gz
|
||||
|
||||
Patch0: 0000-Disable-tests-that-use-networking.patch
|
||||
Patch1: 0001-Fix-NPE-in-MailHandler-JDK-8216363.patch
|
||||
|
||||
BuildRequires: maven-local
|
||||
BuildRequires: mvn(junit:junit)
|
||||
@ -43,6 +44,7 @@ popd
|
||||
rm -rf javamail-JAVAMAIL-1_6_2
|
||||
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
|
||||
# -Werror is harmful - harmless compiler warnings cause build failure
|
||||
%pom_xpath_remove "pom:arg[text()='-Werror']" mail
|
||||
|
||||
Loading…
Reference in New Issue
Block a user