summaryrefslogtreecommitdiff
path: root/source3/smbd/nttrans.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2011-05-30 12:11:53 +0200
committerVolker Lendecke <vl@samba.org>2011-05-31 21:47:07 +0200
commitd77854fbb22bc9237cea14aae1179bbfe3bd0998 (patch)
tree164b8cb414e545ce934ee62144879931c59e5531 /source3/smbd/nttrans.c
parent0ec9a90c29b86435f32c1d47d89df85fa51742f2 (diff)
downloadsamba-d77854fbb22bc9237cea14aae1179bbfe3bd0998.tar.gz
samba-d77854fbb22bc9237cea14aae1179bbfe3bd0998.tar.bz2
samba-d77854fbb22bc9237cea14aae1179bbfe3bd0998.zip
struct make "struct shadow_copy_data" its own talloc context
Diffstat (limited to 'source3/smbd/nttrans.c')
-rw-r--r--source3/smbd/nttrans.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/source3/smbd/nttrans.c b/source3/smbd/nttrans.c
index 1d0c9614a9..18d5979e3c 100644
--- a/source3/smbd/nttrans.c
+++ b/source3/smbd/nttrans.c
@@ -2215,7 +2215,6 @@ static void call_nt_transact_ioctl(connection_struct *conn,
* it be deallocated when we return.
*/
struct shadow_copy_data *shadow_data = NULL;
- TALLOC_CTX *shadow_mem_ctx = NULL;
bool labels = False;
uint32 labels_data_count = 0;
uint32 i;
@@ -2236,29 +2235,19 @@ static void call_nt_transact_ioctl(connection_struct *conn,
labels = True;
}
- shadow_mem_ctx = talloc_init("SHADOW_COPY_DATA");
- if (shadow_mem_ctx == NULL) {
- DEBUG(0,("talloc_init(SHADOW_COPY_DATA) failed!\n"));
- reply_nterror(req, NT_STATUS_NO_MEMORY);
- return;
- }
-
- shadow_data = TALLOC_ZERO_P(shadow_mem_ctx,
+ shadow_data = TALLOC_ZERO_P(talloc_tos(),
struct shadow_copy_data);
if (shadow_data == NULL) {
DEBUG(0,("TALLOC_ZERO() failed!\n"));
- talloc_destroy(shadow_mem_ctx);
reply_nterror(req, NT_STATUS_NO_MEMORY);
return;
}
- shadow_data->mem_ctx = shadow_mem_ctx;
-
/*
* Call the VFS routine to actually do the work.
*/
if (SMB_VFS_GET_SHADOW_COPY_DATA(fsp, shadow_data, labels)!=0) {
- talloc_destroy(shadow_data->mem_ctx);
+ TALLOC_FREE(shadow_data);
if (errno == ENOSYS) {
DEBUG(5,("FSCTL_GET_SHADOW_COPY_DATA: connectpath %s, not supported.\n",
conn->connectpath));
@@ -2283,14 +2272,14 @@ static void call_nt_transact_ioctl(connection_struct *conn,
if (max_data_count<data_count) {
DEBUG(0,("FSCTL_GET_SHADOW_COPY_DATA: max_data_count(%u) too small (%u) bytes needed!\n",
max_data_count,data_count));
- talloc_destroy(shadow_data->mem_ctx);
+ TALLOC_FREE(shadow_data);
reply_nterror(req, NT_STATUS_BUFFER_TOO_SMALL);
return;
}
pdata = nttrans_realloc(ppdata, data_count);
if (pdata == NULL) {
- talloc_destroy(shadow_data->mem_ctx);
+ TALLOC_FREE(shadow_data);
reply_nterror(req, NT_STATUS_NO_MEMORY);
return;
}
@@ -2323,7 +2312,7 @@ static void call_nt_transact_ioctl(connection_struct *conn,
}
}
- talloc_destroy(shadow_data->mem_ctx);
+ TALLOC_FREE(shadow_data);
send_nt_replies(conn, req, NT_STATUS_OK, NULL, 0,
pdata, data_count);