File tree Expand file tree Collapse file tree 1 file changed +3
-10
lines changed Expand file tree Collapse file tree 1 file changed +3
-10
lines changed Original file line number Diff line number Diff line change @@ -45,15 +45,13 @@ func New(buf []byte) *Sensitive {
4545func (s * Sensitive ) Write (b []byte ) error {
4646 newBuf := append (s .buf , b ... )
4747 if & newBuf [0 ] != & s .buf [0 ] {
48+ // buffer starts at a new address - must have moved to a new memory block
4849 zeroMeta (s .meta )
4950 s .setMeta (newBuf )
5051 return nil
5152 }
52- if & newBuf != & s .buf {
53- cancelZeroMeta (s .meta )
54- s .setMeta (newBuf )
55- return nil
56- }
53+ // buffer hasn't moved, don't zero out current buffer as it's still in use, but do update the buffer to capture new length etc.
54+ s .buf = newBuf
5755 return nil
5856}
5957
@@ -89,11 +87,6 @@ func (s *Sensitive) setMeta(buf []byte) {
8987 runtime .SetFinalizer (m , zeroMeta )
9088}
9189
92- func cancelZeroMeta (m * meta ) {
93- m .pin .Unpin ()
94- runtime .SetFinalizer (m , nil )
95- }
96-
9790// zeroMeta zeroes the underlying buffer and removes all finalizers and memory pins
9891func zeroMeta (m * meta ) {
9992 for i := range len (m .buf ) {
You can’t perform that action at this time.
0 commit comments