diff --git a/akka-actor-tests/src/test/scala/akka/serialization/DisabledJavaSerializerWarningSpec.scala b/akka-actor-tests/src/test/scala/akka/serialization/DisabledJavaSerializerWarningSpec.scala index a346d49efd..22e136c6ec 100644 --- a/akka-actor-tests/src/test/scala/akka/serialization/DisabledJavaSerializerWarningSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/serialization/DisabledJavaSerializerWarningSpec.scala @@ -3,9 +3,12 @@ */ package akka.serialization +import java.nio.{ ByteBuffer, ByteOrder } + +import akka.actor.ExtendedActorSystem + import scala.concurrent.duration._ import akka.testkit._ -import akka.testkit.TestEvent._ object DisabledJavaSerializerWarningSpec { final case class Msg(s: String) @@ -42,5 +45,16 @@ class DisabledJavaSerializerWarningSpec extends AkkaSpec( } } + "log and throw exception for erroneous incoming messages when Java Serialization is off" in { + EventFilter.warning(start = "Incoming message attempted to use Java Serialization", occurrences = 1).intercept { + intercept[DisabledJavaSerializer.JavaSerializationException] { + val byteBuffer = ByteBuffer.allocate(128).order(ByteOrder.LITTLE_ENDIAN) + val esys = system.asInstanceOf[ExtendedActorSystem] + val dser = DisabledJavaSerializer(esys) + dser.fromBinary(byteBuffer, "") + } + } + } + } } diff --git a/akka-actor/src/main/scala/akka/serialization/Serializer.scala b/akka-actor/src/main/scala/akka/serialization/Serializer.scala index 3b0d0092da..59225e6f94 100644 --- a/akka-actor/src/main/scala/akka/serialization/Serializer.scala +++ b/akka-actor/src/main/scala/akka/serialization/Serializer.scala @@ -345,13 +345,14 @@ final case class DisabledJavaSerializer(system: ExtendedActorSystem) extends Ser } override def fromBinary(bytes: Array[Byte], clazz: Option[Class[_]]): AnyRef = { - log.warning(LogMarker.Security, "Incoming message attempted to use Java Serialization even though `akka.actor.allow-java-serialization = off` was set! " + - "Message class was: [{}]", clazz) + log.warning(LogMarker.Security, "Incoming message attempted to use Java Serialization even though `akka.actor.allow-java-serialization = off` was set!") throw IllegalDeserialization } override def fromBinary(buf: ByteBuffer, manifest: String): AnyRef = { - this.fromBinary(empty, None) + // we don't capture the manifest or mention it in the log as the default setting for includeManifest is set to false. + log.warning(LogMarker.Security, "Incoming message attempted to use Java Serialization even though `akka.actor.allow-java-serialization = off` was set!") + throw IllegalDeserialization } override def toBinary(o: AnyRef): Array[Byte] = {