@@ -129,9 +129,7 @@ private void resizeImpl(int newCapacity) {
129
129
* <p>Typically used for security reasons, with buffers that contains now-unused plaintext.
130
130
*/
131
131
public void zeroRemaining () {
132
- ((Buffer ) buffer ).mark ();
133
- buffer .put (zeros , 0 , buffer .remaining ());
134
- ((Buffer ) buffer ).reset ();
132
+ zero (buffer .position ());
135
133
}
136
134
137
135
/**
@@ -140,9 +138,20 @@ public void zeroRemaining() {
140
138
* <p>Typically used for security reasons, with buffers that contains now-unused plaintext.
141
139
*/
142
140
public void zero () {
141
+ zero (0 );
142
+ }
143
+
144
+ private void zero (final int position ) {
143
145
((Buffer ) buffer ).mark ();
144
- ((Buffer ) buffer ).position (0 );
145
- buffer .put (zeros , 0 , buffer .remaining ());
146
+ ((Buffer ) buffer ).position (position );
147
+ int size = buffer .remaining ();
148
+ int length = Math .min (size , zeros .length );
149
+ int offset = 0 ;
150
+ while (length > 0 ) {
151
+ buffer .put (zeros , 0 , length );
152
+ offset = offset + length ;
153
+ length = Math .min (size - offset , zeros .length );
154
+ }
146
155
((Buffer ) buffer ).reset ();
147
156
}
148
157
0 commit comments