summaryrefslogtreecommitdiffstats
path: root/source/smbd/notify.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2007-06-12 19:59:38 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:23:17 -0500
commitc23e08cc09b8de860ab9c7ac9d0e7c2502dfccd9 (patch)
tree6a67fb8a067e8370f7f38a737f0256fd41e1e8b8 /source/smbd/notify.c
parentbcfce39094ef30a1d1ae4dba5a90738e2678bcbf (diff)
downloadsamba-c23e08cc09b8de860ab9c7ac9d0e7c2502dfccd9.tar.gz
samba-c23e08cc09b8de860ab9c7ac9d0e7c2502dfccd9.tar.xz
samba-c23e08cc09b8de860ab9c7ac9d0e7c2502dfccd9.zip
r23450: max_params_return is complete fiction when getting a changenotify
request. Ignore it. Should fix bug #4689 but more tests and valgrinding will follow. Jeremy.
Diffstat (limited to 'source/smbd/notify.c')
-rw-r--r--source/smbd/notify.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/source/smbd/notify.c b/source/smbd/notify.c
index b2ac26764af..5491f8eaf8a 100644
--- a/source/smbd/notify.c
+++ b/source/smbd/notify.c
@@ -27,7 +27,6 @@ struct notify_change_request {
struct files_struct *fsp; /* backpointer for cancel by mid */
char request_buf[smb_size];
uint32 filter;
- uint32 max_param_count;
uint32 current_bufsize;
struct notify_mid_map *mid_map;
void *backend_data;
@@ -127,12 +126,12 @@ static void change_notify_reply_packet(const char *request_buf,
"failed.");
}
-void change_notify_reply(const char *request_buf, uint32 max_param_count,
+void change_notify_reply(const char *request_buf,
struct notify_change_buf *notify_buf)
{
char *outbuf = NULL;
prs_struct ps;
- size_t buflen = smb_size+38+max_param_count;
+ size_t buflen;
if (notify_buf->num_changes == -1) {
change_notify_reply_packet(request_buf, NT_STATUS_OK);
@@ -146,14 +145,7 @@ void change_notify_reply(const char *request_buf, uint32 max_param_count,
goto done;
}
- if (prs_offset(&ps) > max_param_count) {
- /*
- * We exceed what the client is willing to accept. Send
- * nothing.
- */
- change_notify_reply_packet(request_buf, NT_STATUS_OK);
- goto done;
- }
+ buflen = smb_size+38+prs_offset(&ps) + 4 /* padding */;
if (!(outbuf = SMB_MALLOC_ARRAY(char, buflen))) {
change_notify_reply_packet(request_buf, NT_STATUS_NO_MEMORY);
@@ -215,7 +207,7 @@ NTSTATUS change_notify_create(struct files_struct *fsp, uint32 filter,
return status;
}
-NTSTATUS change_notify_add_request(const char *inbuf, uint32 max_param_count,
+NTSTATUS change_notify_add_request(const char *inbuf,
uint32 filter, BOOL recursive,
struct files_struct *fsp)
{
@@ -232,7 +224,6 @@ NTSTATUS change_notify_add_request(const char *inbuf, uint32 max_param_count,
map->req = request;
memcpy(request->request_buf, inbuf, sizeof(request->request_buf));
- request->max_param_count = max_param_count;
request->current_bufsize = 0;
request->filter = filter;
request->fsp = fsp;
@@ -409,7 +400,6 @@ static void notify_fsp(files_struct *fsp, uint32 action, const char *name)
*/
change_notify_reply(fsp->notify->requests->request_buf,
- fsp->notify->requests->max_param_count,
fsp->notify);
change_notify_remove_request(fsp->notify->requests);