SSLEngine.unwrap kann den Quell-Bytepuffer verändernJava

Java-Forum
Guest
 SSLEngine.unwrap kann den Quell-Bytepuffer verändern

Post by Guest »

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(); //

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post