diff options
author | Stefan Metzmacher <metze@samba.org> | 2006-07-12 14:15:06 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:10:06 -0500 |
commit | e6b29409a29bdf99c45b2c0aefecb321904f2fd3 (patch) | |
tree | 1e35f06fc2a55f6c688ecb96ac99fb011c13c50b | |
parent | dd2d3b082c837ef01803f3a69371992400861a32 (diff) | |
download | samba-e6b29409a29bdf99c45b2c0aefecb321904f2fd3.tar.gz samba-e6b29409a29bdf99c45b2c0aefecb321904f2fd3.tar.bz2 samba-e6b29409a29bdf99c45b2c0aefecb321904f2fd3.zip |
r16979: - ntcancel should compare TID,UID,MID and PID
- don't return ntcancel error, as we don't know how signing works
for them
metze
(This used to be commit 20311e58d512e9fcc38ce786aaecf7246d182ca4)
-rw-r--r-- | source4/smb_server/smb/reply.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/source4/smb_server/smb/reply.c b/source4/smb_server/smb/reply.c index c79ad15ea8..256abc0c7c 100644 --- a/source4/smb_server/smb/reply.c +++ b/source4/smb_server/smb/reply.c @@ -2197,12 +2197,15 @@ void smbsrv_reply_ntcreate_and_X(struct smbsrv_request *req) void smbsrv_reply_ntcancel(struct smbsrv_request *req) { struct smbsrv_request *r; + uint16_t tid = SVAL(req->in.hdr,HDR_TID); + uint16_t uid = SVAL(req->in.hdr,HDR_UID); uint16_t mid = SVAL(req->in.hdr,HDR_MID); uint16_t pid = SVAL(req->in.hdr,HDR_PID); for (r = req->smb_conn->requests; r; r = r->next) { + if (tid != SVAL(r->in.hdr,HDR_TID)) continue; + if (uid != SVAL(r->in.hdr,HDR_UID)) continue; if (mid != SVAL(r->in.hdr,HDR_MID)) continue; - /* do we really need to check the PID? */ if (pid != SVAL(r->in.hdr,HDR_PID)) continue; SMBSRV_CHECK(ntvfs_cancel(r->ntvfs)); @@ -2212,8 +2215,12 @@ void smbsrv_reply_ntcancel(struct smbsrv_request *req) return; } - /* TODO: workout the correct error code */ - smbsrv_send_error(req, NT_STATUS_FOOBAR); + /* TODO: workout the correct error code, + * until we know how the smb signing works + * for ntcancel replies, don't send an error + */ + /*smbsrv_send_error(req, NT_STATUS_FOOBAR);*/ + talloc_free(req); } /* |