diff options
author | Joseph Sutton <josephsutton@catalyst.net.nz> | 2022-08-02 14:35:33 +1200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2022-09-12 23:07:38 +0000 |
commit | 03a50d8f7d872b6ef701d1207061c88b73d171bb (patch) | |
tree | 6c41342b0d67cae3401a6433b9c7442a8af25d26 /lib/util | |
parent | 65c473d4a53fc8a22a0d531aff45203ea3a4d99b (diff) | |
download | samba-03a50d8f7d872b6ef701d1207061c88b73d171bb.tar.gz |
lib:util: Check memset_s() error code in talloc_keep_secret_destructor()
Panic if memset_s() fails.
Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'lib/util')
-rw-r--r-- | lib/util/talloc_keep_secret.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/util/talloc_keep_secret.c b/lib/util/talloc_keep_secret.c index 70d449b5f12..21048659e5d 100644 --- a/lib/util/talloc_keep_secret.c +++ b/lib/util/talloc_keep_secret.c @@ -22,13 +22,26 @@ static int talloc_keep_secret_destructor(void *ptr) { + int ret; size_t size = talloc_get_size(ptr); if (unlikely(size == 0)) { return 0; } - memset_s(ptr, size, 0, size); + ret = memset_s(ptr, size, 0, size); + if (unlikely(ret != 0)) { + char *msg = NULL; + int ret2; + ret2 = asprintf(&msg, + "talloc_keep_secret_destructor: memset_s() failed: %s", + strerror(ret)); + if (ret2 != -1) { + smb_panic(msg); + } else { + smb_panic("talloc_keep_secret_destructor: memset_s() failed"); + } + } return 0; } |