1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-03 13:47:25 +03:00

smbd: Use smbXsrv_open_global_parse_record() in .._verify_record()

Signed-off-by: Volker Lendecke <vl@samba.org>

Autobuild-User(master): Volker Lendecke <vl@samba.org>
Autobuild-Date(master): Tue Jan 24 09:15:26 UTC 2023 on atb-devel-224
This commit is contained in:
Volker Lendecke 2023-01-19 12:29:20 +01:00
parent 132b83d065
commit f7b50bc059

View File

@ -344,6 +344,11 @@ static NTSTATUS smbXsrv_open_global_parse_record(
goto done;
}
DBG_DEBUG("\n");
if (CHECK_DEBUGLVL(10)) {
NDR_PRINT_DEBUG(smbXsrv_open_globalB, &global_blob);
}
if (global_blob.version != SMBXSRV_VERSION_0) {
status = NT_STATUS_INTERNAL_DB_CORRUPTION;
DEBUG(1,("Invalid record in smbXsrv_open_global.tdb:"
@ -376,42 +381,22 @@ static NTSTATUS smbXsrv_open_global_verify_record(
TALLOC_CTX *mem_ctx,
struct smbXsrv_open_global0 **_global0)
{
DATA_BLOB blob = { .data = val.dptr, .length = val.dsize, };
struct smbXsrv_open_globalB global_blob;
enum ndr_err_code ndr_err;
struct smbXsrv_open_global0 *global0 = NULL;
struct server_id_buf buf;
NTSTATUS status;
if (val.dsize == 0) {
return NT_STATUS_NOT_FOUND;
}
ndr_err = ndr_pull_struct_blob(
&blob,
mem_ctx,
&global_blob,
(ndr_pull_flags_fn_t)ndr_pull_smbXsrv_open_globalB);
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
DBG_WARNING("key '%s' ndr_pull_struct_blob - %s\n",
status = smbXsrv_open_global_parse_record(mem_ctx, key, val, &global0);
if (!NT_STATUS_IS_OK(status)) {
DBG_WARNING("smbXsrv_open_global_parse_record for %s failed: "
"%s\n",
tdb_data_dbg(key),
ndr_map_error2string(ndr_err));
return ndr_map_error2ntstatus(ndr_err);
nt_errstr(status));
return status;
}
DBG_DEBUG("\n");
if (CHECK_DEBUGLVL(10)) {
NDR_PRINT_DEBUG(smbXsrv_open_globalB, &global_blob);
}
if (global_blob.version != SMBXSRV_VERSION_0) {
DBG_ERR("key '%s' use unsupported version %u\n",
tdb_data_dbg(key),
global_blob.version);
NDR_PRINT_DEBUG(smbXsrv_open_globalB, &global_blob);
return NT_STATUS_INTERNAL_ERROR;
}
global0 = global_blob.info.info0;
*_global0 = global0;
if (server_id_is_disconnected(&global0->server_id)) {