The branch, master has been updated
       via  e310ad7 s3:secrets: clean up sid before storing
      from  7b59cd7 dsdb encrypted_secrets: Allow "ldb:// and "mdb://" in file 
path

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit e310ad7e1ebabfb6d5f1a3cfd096da6cfe4a286c
Author: Philipp Gesang <[email protected]>
Date:   Thu Oct 4 09:25:14 2018 +0200

    s3:secrets: clean up sid before storing
    
    SIDs may contain non-zero memory beyond SubAuthorityCount:
    
        {
        key(15) = "SECRETS/SID/FOO"
        data(68) = 
"\01\04\00\00\00\00\00\05\15\00\00\00}u@\8C\08\A3\06nx\95\16\FE\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`F\92\B7\03\00\00\00\18e\92\B7\03\00\00\00@H\92\B7\00\00\00\00"
        }
    
    These parts are lost when converting to ``string format syntax``
    so a roundtrip conversion does not result in the same binary
    representation.
    
    Ensure that these never reach the tdb by using an initialized
    copy. This allows bitwise comparisons of secrets.tdb after
    dumping SIDs as text and reading them back.
    
    Signed-off-by: Philipp Gesang <[email protected]>
    Reviewed-by: Volker Lendecke <[email protected]>
    Reviewed-by: Andrew Bartlett <[email protected]>
    
    Autobuild-User(master): Andrew Bartlett <[email protected]>
    Autobuild-Date(master): Fri Oct 19 13:59:04 CEST 2018 on sn-devel-144

-----------------------------------------------------------------------

Summary of changes:
 source3/passdb/machine_account_secrets.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)


Changeset truncated at 500 lines:

diff --git a/source3/passdb/machine_account_secrets.c 
b/source3/passdb/machine_account_secrets.c
index a96bf1c..d8ffcaa 100644
--- a/source3/passdb/machine_account_secrets.c
+++ b/source3/passdb/machine_account_secrets.c
@@ -114,6 +114,7 @@ bool secrets_store_domain_sid(const char *domain, const 
struct dom_sid  *sid)
 {
        char *protect_ids;
        bool ret;
+       struct dom_sid clean_sid = { 0 };
 
        protect_ids = secrets_fetch(protect_ids_keystr(domain), NULL);
        if (protect_ids) {
@@ -126,7 +127,15 @@ bool secrets_store_domain_sid(const char *domain, const 
struct dom_sid  *sid)
        }
        SAFE_FREE(protect_ids);
 
-       ret = secrets_store(domain_sid_keystr(domain), sid, sizeof(struct 
dom_sid ));
+       /*
+        * use a copy to prevent uninitialized memory from being carried over
+        * to the tdb
+        */
+       sid_copy(&clean_sid, sid);
+
+       ret = secrets_store(domain_sid_keystr(domain),
+                           &clean_sid,
+                           sizeof(struct dom_sid));
 
        /* Force a re-query, in the case where we modified our domain */
        if (ret) {


-- 
Samba Shared Repository

Reply via email to