Skip to content

Commit 269e008

Browse files
committed
fix(memory): set secure flag properly
Signed-off-by: Tony Gorez <[email protected]>
1 parent 9626380 commit 269e008

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ exports.sodium_malloc = function (size) {
4141
exports.sodium_free = function (buf) {
4242
if (!buf || !buf.secure) return
4343

44+
buf.secure = false
4445
binding.sodium_free(buf.buffer)
4546
}
4647

test/memory.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,20 @@ test('sodium_free, double free', function (t) {
128128
t.ok(buf.byteLength === 0)
129129
})
130130

131+
test('sodium_free should clear secure flag', function (t) {
132+
const buf = sodium.sodium_malloc(32)
133+
134+
t.ok(buf.secure === true, 'buf.secure is true before free')
135+
136+
sodium.sodium_free(buf)
137+
138+
t.ok(buf.byteLength === 0, 'buffer is detached after free')
139+
t.ok(buf.secure === false, 'buf.secure is false after free')
140+
141+
sodium.sodium_free(buf)
142+
t.ok(buf.secure === false, 'second free is a no-op, secure stays false')
143+
})
144+
131145
test.skip('sodium_malloc bounds', function (t) {
132146
t.throws(function () {
133147
sodium.sodium_malloc(-1)

0 commit comments

Comments
 (0)