[SCM] Samba Shared Repository - branch v4-6-test updated
Karolin Seeger
kseeger at samba.org
Fri Dec 22 21:11:02 UTC 2017
The branch, v4-6-test has been updated
via f69814f g_lock: fix cleanup of stale entries in g_lock_trylock()
via e39dcec s4:kdc: only map SDB_ERR_NOT_FOUND_HERE to HDB_ERR_NOT_FOUND_HERE
from 51fb772 VERSION: Bump version up to 4.6.13...
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-6-test
- Log -----------------------------------------------------------------
commit f69814f0350396a3d7aac1324c2eb71bc8068f69
Author: Stefan Metzmacher <metze at samba.org>
Date: Wed Dec 20 08:25:19 2017 +0100
g_lock: fix cleanup of stale entries in g_lock_trylock()
g_lock_trylock() always incremented the counter 'i', even after cleaning a stale
entry at position 'i', which means it skipped checking for a conflict against
the new entry at position 'i'.
As result a process could get a write lock, while there're still
some read lock holders. Once we get into that problem, also more than
one write lock are possible.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13195
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Volker Lendecke <vl at samba.org>
Autobuild-User(master): Volker Lendecke <vl at samba.org>
Autobuild-Date(master): Wed Dec 20 20:31:48 CET 2017 on sn-devel-144
(similar to commit 576fb4fb5dc506bf55e5cf87973999dca444149b)
Autobuild-User(v4-6-test): Karolin Seeger <kseeger at samba.org>
Autobuild-Date(v4-6-test): Fri Dec 22 22:11:00 CET 2017 on sn-devel-144
commit e39dcec5e146dafaa47fbf64cfee96356a3ee8c1
Author: Stefan Metzmacher <metze at samba.org>
Date: Thu Sep 21 12:02:25 2017 +0200
s4:kdc: only map SDB_ERR_NOT_FOUND_HERE to HDB_ERR_NOT_FOUND_HERE
HDB_ERR_NOT_FOUND_HERE indicated a very specific error on an RODC.
We should not map any error to HDB_ERR_NOT_FOUND_HERE,
we should just pass errors along unmapped.
Otherwise we'll hit the logic bug in:
if (ret == KDC_PROXY_REQUEST) {
uint16_t port;
if (!sock->kdc_socket->kdc->am_rodc) {
DEBUG(0,("kdc_udp_call_loop: proxying requested when not RODC"));
talloc_free(call);
goto done;
}
And just don't send an error message to the client.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13132
Signed-off-by: Stefan Metzmacher <metze at samba.org>
Reviewed-by: Andreas Schneider <asn at samba.org>
Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
Autobuild-Date(master): Wed Dec 6 23:16:54 CET 2017 on sn-devel-144
(cherry picked from commit aaa946bb9eb8088389b8ffdec460023f1961616c)
-----------------------------------------------------------------------
Summary of changes:
source3/lib/g_lock.c | 6 +++++-
source4/kdc/hdb-samba4.c | 24 ++++++++++++++++++------
2 files changed, 23 insertions(+), 7 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/lib/g_lock.c b/source3/lib/g_lock.c
index f954978..6a661cd 100644
--- a/source3/lib/g_lock.c
+++ b/source3/lib/g_lock.c
@@ -133,7 +133,9 @@ static NTSTATUS g_lock_trylock(struct db_record *rec, struct server_id self,
return NT_STATUS_INTERNAL_ERROR;
}
- for (i=0; i<num_locks; i++) {
+ i=0;
+
+ while (i < num_locks) {
if (serverid_equal(&self, &locks[i].pid)) {
status = NT_STATUS_INTERNAL_ERROR;
goto done;
@@ -160,7 +162,9 @@ static NTSTATUS g_lock_trylock(struct db_record *rec, struct server_id self,
locks[i] = locks[num_locks-1];
num_locks -= 1;
modified = true;
+ continue;
}
+ i++;
}
tmp = talloc_realloc(talloc_tos(), locks, struct g_lock_rec,
diff --git a/source4/kdc/hdb-samba4.c b/source4/kdc/hdb-samba4.c
index 85d166f..47eaa1c 100644
--- a/source4/kdc/hdb-samba4.c
+++ b/source4/kdc/hdb-samba4.c
@@ -114,8 +114,10 @@ static krb5_error_code hdb_samba4_fetch_kvno(krb5_context context, HDB *db,
break;
case SDB_ERR_NOENTRY:
return HDB_ERR_NOENTRY;
- default:
+ case SDB_ERR_NOT_FOUND_HERE:
return HDB_ERR_NOT_FOUND_HERE;
+ default:
+ return ret;
}
ret = sdb_entry_ex_to_hdb_entry_ex(context, &sdb_entry_ex, entry_ex);
@@ -146,8 +148,10 @@ static krb5_error_code hdb_samba4_firstkey(krb5_context context, HDB *db, unsign
return HDB_ERR_WRONG_REALM;
case SDB_ERR_NOENTRY:
return HDB_ERR_NOENTRY;
- default:
+ case SDB_ERR_NOT_FOUND_HERE:
return HDB_ERR_NOT_FOUND_HERE;
+ default:
+ return ret;
}
ret = sdb_entry_ex_to_hdb_entry_ex(context, &sdb_entry_ex, entry);
@@ -173,8 +177,10 @@ static krb5_error_code hdb_samba4_nextkey(krb5_context context, HDB *db, unsigne
return HDB_ERR_WRONG_REALM;
case SDB_ERR_NOENTRY:
return HDB_ERR_NOENTRY;
- default:
+ case SDB_ERR_NOT_FOUND_HERE:
return HDB_ERR_NOT_FOUND_HERE;
+ default:
+ return ret;
}
ret = sdb_entry_ex_to_hdb_entry_ex(context, &sdb_entry_ex, entry);
@@ -214,9 +220,11 @@ hdb_samba4_check_constrained_delegation(krb5_context context, HDB *db,
case SDB_ERR_NOENTRY:
ret = HDB_ERR_NOENTRY;
break;
- default:
+ case SDB_ERR_NOT_FOUND_HERE:
ret = HDB_ERR_NOT_FOUND_HERE;
break;
+ default:
+ break;
}
return ret;
@@ -248,9 +256,11 @@ hdb_samba4_check_pkinit_ms_upn_match(krb5_context context, HDB *db,
case SDB_ERR_NOENTRY:
ret = HDB_ERR_NOENTRY;
break;
- default:
+ case SDB_ERR_NOT_FOUND_HERE:
ret = HDB_ERR_NOT_FOUND_HERE;
break;
+ default:
+ break;
}
return ret;
@@ -282,9 +292,11 @@ hdb_samba4_check_s4u2self(krb5_context context, HDB *db,
case SDB_ERR_NOENTRY:
ret = HDB_ERR_NOENTRY;
break;
- default:
+ case SDB_ERR_NOT_FOUND_HERE:
ret = HDB_ERR_NOT_FOUND_HERE;
break;
+ default:
+ break;
}
return ret;
--
Samba Shared Repository
More information about the samba-cvs
mailing list