summaryrefslogtreecommitdiff
path: root/lib/util
diff options
context:
space:
mode:
authorJoseph Sutton <josephsutton@catalyst.net.nz>2022-08-02 14:35:33 +1200
committerAndrew Bartlett <abartlet@samba.org>2022-09-12 23:07:38 +0000
commit03a50d8f7d872b6ef701d1207061c88b73d171bb (patch)
tree6c41342b0d67cae3401a6433b9c7442a8af25d26 /lib/util
parent65c473d4a53fc8a22a0d531aff45203ea3a4d99b (diff)
downloadsamba-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.c15
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;
}