Skip to content

Commit ba4e7e7

Browse files
authored
Fix ambiguous method for AssertZeroizeOnDrop (#725)
1 parent a37fa8d commit ba4e7e7

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

zeroize/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ pub mod __internal {
271271
fn zeroize_or_on_drop(self);
272272
}
273273

274-
impl<T: ZeroizeOnDrop> AssertZeroizeOnDrop for &mut T {
274+
impl<T: ZeroizeOnDrop> AssertZeroizeOnDrop for &&mut T {
275275
fn zeroize_or_on_drop(self) {}
276276
}
277277

zeroize/tests/zeroize_derive.rs

+31-1
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ mod custom_derive_tests {
242242
}
243243

244244
#[test]
245-
fn derive_only_zeroize_on_drop() {
245+
fn derive_inherit_zeroize_on_drop() {
246246
#[derive(ZeroizeOnDrop)]
247247
struct X([u8; 3]);
248248

@@ -255,4 +255,34 @@ mod custom_derive_tests {
255255
}
256256
assert_eq!(&value.0 .0, &[0, 0, 0])
257257
}
258+
259+
#[test]
260+
fn derive_inherit_from_both() {
261+
#[derive(Zeroize, ZeroizeOnDrop)]
262+
struct X([u8; 3]);
263+
264+
#[derive(ZeroizeOnDrop)]
265+
struct Z(X);
266+
267+
let mut value = Z(X([1, 2, 3]));
268+
unsafe {
269+
std::ptr::drop_in_place(&mut value);
270+
}
271+
assert_eq!(&value.0 .0, &[0, 0, 0])
272+
}
273+
274+
#[test]
275+
fn derive_inherit_both() {
276+
#[derive(Zeroize, ZeroizeOnDrop)]
277+
struct X([u8; 3]);
278+
279+
#[derive(Zeroize, ZeroizeOnDrop)]
280+
struct Z(X);
281+
282+
let mut value = Z(X([1, 2, 3]));
283+
unsafe {
284+
std::ptr::drop_in_place(&mut value);
285+
}
286+
assert_eq!(&value.0 .0, &[0, 0, 0])
287+
}
258288
}

0 commit comments

Comments
 (0)