SSLEngine.unwrap kann den Quell-Bytepuffer verändern

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: SSLEngine.unwrap kann den Quell-Bytepuffer verändern

by Guest » 05 Jan 2025, 17:04

Der Aufruf von SSLEngine.unwrap(srcBB, dstBB) kann den Quell-ByteBuffer (scrBB) unerwartet ändern.
Bei der Untersuchung der verbrauchten Quellbytes verlasse ich mich auf srcBB um seine Position voranzutreiben. Im Allgemeinen funktioniert es, aber irgendwann wird srcBB.array() tief in der Engine während einiger SSL-Verschlüsselungsarbeiten verwendet. Einige Bytes werden im Shared Byte[] geändert.
Normalerweise sollte ich nur Folgendes benötigen:

Code: Select all

//read some bytes in netBufferIn...then:
netBufferIn.flip();
SSLEngineResult result = sslEngine.unwrap(netBufferIn, appBufferIn);
netBufferIn.compact();
Der JDK-Quellcode zeigt, dass er jeden nicht schreibgeschützten Quellpuffer für sich selbst verwendet, und ich habe gesehen, dass dies passiert ist. Das ist sehr falsch. Ich übergebe also einen schreibgeschützten Puffer, aber die Benutzeroberfläche muss meine ursprüngliche Pufferposition manuell verschieben und ist gezwungen, result.bytesConsumed():
zu vertrauen

Code: Select all

//read some bytes in netBufferIn...then:
netBufferIn.flip();
ByteBuffer roBB = netBufferIn.asReadOnlyBuffer(); //

Top