summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
Diffstat (limited to 'source3')
-rw-r--r--source3/libnet/libnet_samsync.c3
-rw-r--r--source3/libnet/libnet_samsync.h10
-rw-r--r--source3/libnet/libnet_samsync_display.c7
-rw-r--r--source3/libnet/libnet_samsync_keytab.c19
-rw-r--r--source3/libnet/libnet_samsync_ldif.c4
-rw-r--r--source3/libnet/libnet_samsync_passdb.c2
6 files changed, 26 insertions, 19 deletions
diff --git a/source3/libnet/libnet_samsync.c b/source3/libnet/libnet_samsync.c
index dcf5f9c39f..4f2a8f9222 100644
--- a/source3/libnet/libnet_samsync.c
+++ b/source3/libnet/libnet_samsync.c
@@ -336,7 +336,8 @@ NTSTATUS libnet_samsync(enum netr_SamDatabaseID database_id,
/* Process results */
callback_status = ctx->delta_fn(mem_ctx, database_id,
- delta_enum_array, result, ctx);
+ delta_enum_array,
+ NT_STATUS_IS_OK(result), ctx);
if (!NT_STATUS_IS_OK(callback_status)) {
result = callback_status;
goto out;
diff --git a/source3/libnet/libnet_samsync.h b/source3/libnet/libnet_samsync.h
index 8559043f5a..1f10d2c1c0 100644
--- a/source3/libnet/libnet_samsync.h
+++ b/source3/libnet/libnet_samsync.h
@@ -30,7 +30,7 @@ struct samsync_context;
typedef NTSTATUS (*samsync_delta_fn_t)(TALLOC_CTX *,
enum netr_SamDatabaseID,
struct netr_DELTA_ENUM_ARRAY *,
- NTSTATUS,
+ bool,
struct samsync_context *);
struct samsync_context {
@@ -54,20 +54,20 @@ struct samsync_context {
NTSTATUS fetch_sam_entries_ldif(TALLOC_CTX *mem_ctx,
enum netr_SamDatabaseID database_id,
struct netr_DELTA_ENUM_ARRAY *r,
- NTSTATUS result,
+ bool last_query,
struct samsync_context *ctx);
NTSTATUS fetch_sam_entries(TALLOC_CTX *mem_ctx,
enum netr_SamDatabaseID database_id,
struct netr_DELTA_ENUM_ARRAY *r,
- NTSTATUS status,
+ bool last_query,
struct samsync_context *ctx);
NTSTATUS display_sam_entries(TALLOC_CTX *mem_ctx,
enum netr_SamDatabaseID database_id,
struct netr_DELTA_ENUM_ARRAY *r,
- NTSTATUS status,
+ bool last_query,
struct samsync_context *ctx);
NTSTATUS fetch_sam_entries_keytab(TALLOC_CTX *mem_ctx,
enum netr_SamDatabaseID database_id,
struct netr_DELTA_ENUM_ARRAY *r,
- NTSTATUS status,
+ bool last_query,
struct samsync_context *ctx);
diff --git a/source3/libnet/libnet_samsync_display.c b/source3/libnet/libnet_samsync_display.c
index 6e9a6924b4..6f7ae4e7aa 100644
--- a/source3/libnet/libnet_samsync_display.c
+++ b/source3/libnet/libnet_samsync_display.c
@@ -164,7 +164,7 @@ static void display_rename_alias(uint32_t rid, struct netr_DELTA_RENAME *r)
static NTSTATUS display_sam_entry(TALLOC_CTX *mem_ctx,
enum netr_SamDatabaseID database_id,
struct netr_DELTA_ENUM *r,
- NTSTATUS status,
+ bool last_query,
struct samsync_context *ctx)
{
union netr_DELTA_UNION u = r->delta_union;
@@ -289,13 +289,14 @@ static NTSTATUS display_sam_entry(TALLOC_CTX *mem_ctx,
NTSTATUS display_sam_entries(TALLOC_CTX *mem_ctx,
enum netr_SamDatabaseID database_id,
struct netr_DELTA_ENUM_ARRAY *r,
- NTSTATUS status,
+ bool last_query,
struct samsync_context *ctx)
{
int i;
for (i = 0; i < r->num_deltas; i++) {
- display_sam_entry(mem_ctx, database_id, &r->delta_enum[i], status, ctx);
+ display_sam_entry(mem_ctx, database_id, &r->delta_enum[i],
+ last_query, ctx);
}
return NT_STATUS_OK;
diff --git a/source3/libnet/libnet_samsync_keytab.c b/source3/libnet/libnet_samsync_keytab.c
index 49d7ac27e2..d10bfd5e9d 100644
--- a/source3/libnet/libnet_samsync_keytab.c
+++ b/source3/libnet/libnet_samsync_keytab.c
@@ -75,7 +75,7 @@ static NTSTATUS fetch_sam_entry_keytab(TALLOC_CTX *mem_ctx,
enum netr_SamDatabaseID database_id,
uint32_t rid,
struct netr_DELTA_USER *r,
- NTSTATUS status,
+ bool last_query,
struct libnet_keytab_context *ctx)
{
uchar nt_passwd[16];
@@ -111,7 +111,7 @@ static NTSTATUS fetch_sam_entry_keytab(TALLOC_CTX *mem_ctx,
NTSTATUS fetch_sam_entries_keytab(TALLOC_CTX *mem_ctx,
enum netr_SamDatabaseID database_id,
struct netr_DELTA_ENUM_ARRAY *r,
- NTSTATUS result,
+ bool last_query,
struct samsync_context *ctx)
{
NTSTATUS status = NT_STATUS_OK;
@@ -143,7 +143,7 @@ NTSTATUS fetch_sam_entries_keytab(TALLOC_CTX *mem_ctx,
status = fetch_sam_entry_keytab(mem_ctx, database_id,
r->delta_enum[i].delta_id_union.rid,
r->delta_enum[i].delta_union.user,
- result,
+ last_query,
keytab_ctx);
if (!NT_STATUS_IS_OK(status)) {
goto out;
@@ -159,10 +159,15 @@ NTSTATUS fetch_sam_entries_keytab(TALLOC_CTX *mem_ctx,
goto out;
}
- ctx->result_message = talloc_asprintf(mem_ctx,
- "vampired %d accounts to keytab %s",
- keytab_ctx->count,
- keytab_ctx->keytab_name);
+ if (last_query) {
+ ctx->result_message = talloc_asprintf(mem_ctx,
+ "Vampired %d accounts to keytab %s",
+ keytab_ctx->count,
+ keytab_ctx->keytab_name);
+ TALLOC_FREE(keytab_ctx);
+ }
+
+ return NT_STATUS_OK;
out:
TALLOC_FREE(keytab_ctx);
diff --git a/source3/libnet/libnet_samsync_ldif.c b/source3/libnet/libnet_samsync_ldif.c
index 64eb9a58da..c89fedc2a3 100644
--- a/source3/libnet/libnet_samsync_ldif.c
+++ b/source3/libnet/libnet_samsync_ldif.c
@@ -1158,7 +1158,7 @@ static NTSTATUS ldif_realloc_maps(TALLOC_CTX *mem_ctx,
NTSTATUS fetch_sam_entries_ldif(TALLOC_CTX *mem_ctx,
enum netr_SamDatabaseID database_id,
struct netr_DELTA_ENUM_ARRAY *r,
- NTSTATUS result,
+ bool last_query,
struct samsync_context *ctx)
{
NTSTATUS status;
@@ -1193,7 +1193,7 @@ NTSTATUS fetch_sam_entries_ldif(TALLOC_CTX *mem_ctx,
}
/* This was the last query */
- if (NT_STATUS_IS_OK(result)) {
+ if (last_query) {
ldif_write_output(database_id, ldif_ctx);
if (ldif_ctx->ldif_file != stdout) {
ctx->result_message = talloc_asprintf(mem_ctx,
diff --git a/source3/libnet/libnet_samsync_passdb.c b/source3/libnet/libnet_samsync_passdb.c
index a049d1b9c3..7d07bcb791 100644
--- a/source3/libnet/libnet_samsync_passdb.c
+++ b/source3/libnet/libnet_samsync_passdb.c
@@ -776,7 +776,7 @@ static NTSTATUS fetch_sam_entry(TALLOC_CTX *mem_ctx,
NTSTATUS fetch_sam_entries(TALLOC_CTX *mem_ctx,
enum netr_SamDatabaseID database_id,
struct netr_DELTA_ENUM_ARRAY *r,
- NTSTATUS status,
+ bool last_query,
struct samsync_context *ctx)
{
int i;