9881 smbd terminated by SIGABRT after smb_account_free()
Reviewed by: Gordon Ross <gordon.w.ross@gmail.com>
Reviewed by: Jason King <jason.brian.king@gmail.com>
Approved by: Dan McDonald <danmcd@joyent.com>
diff --git a/usr/src/lib/smbsrv/libsmb/common/smb_sam.c b/usr/src/lib/smbsrv/libsmb/common/smb_sam.c
index e236b56..68a7aa2 100644
--- a/usr/src/lib/smbsrv/libsmb/common/smb_sam.c
+++ b/usr/src/lib/smbsrv/libsmb/common/smb_sam.c
@@ -23,6 +23,7 @@
* Use is subject to license terms.
*
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2018 RackTop Systems.
*/
#include <strings.h>
@@ -91,7 +92,7 @@
*
* NT_STATUS_NOT_FOUND This is not a local account
* NT_STATUS_NONE_MAPPED It's a local account but cannot be
- * translated.
+ * translated.
* other error status codes.
*/
uint32_t
@@ -201,7 +202,7 @@
*
* NT_STATUS_NOT_FOUND This is not a local account
* NT_STATUS_NONE_MAPPED It's a local account but cannot be
- * translated.
+ * translated.
* other error status codes.
*/
uint32_t
@@ -477,6 +478,7 @@
/*
* Frees memories allocated for the passed account fields.
+ * Initializes @account after all.
*/
void
smb_account_free(smb_account_t *account)
@@ -485,6 +487,8 @@
free(account->a_domain);
smb_sid_free(account->a_sid);
smb_sid_free(account->a_domsid);
+
+ bzero(account, sizeof (smb_account_t));
}
/*