diff options
author | Stefan Metzmacher <metze@samba.org> | 2012-09-20 16:04:01 +0200 |
---|---|---|
committer | Michael Adam <obnox@samba.org> | 2012-09-22 10:18:58 +0200 |
commit | 9249871f40aab021d62d3154f8ca286b52f5ef76 (patch) | |
tree | d42f039f4c6da88240d8152daf2c46f5dd0074af | |
parent | 25437df8a65e56616499dda18c696f58be08f67a (diff) | |
download | samba-9249871f40aab021d62d3154f8ca286b52f5ef76.tar.gz |
s3:smb2_server: avoid segfault in smbd_smb2_request_pending_queue()
Because we should not call smbd_smb2_request_error() on an
request that is still running.
If the subreq implementes a cancel function, this should
take care of triggering smbd_smb2_request_error.
metze
Signed-off-by: Michael Adam <obnox@samba.org>
-rw-r--r-- | source3/smbd/smb2_server.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c index 77f25a9a821..dcaefb16890 100644 --- a/source3/smbd/smb2_server.c +++ b/source3/smbd/smb2_server.c @@ -1297,9 +1297,13 @@ NTSTATUS smbd_smb2_request_pending_queue(struct smbd_smb2_request *req, * request chain. This is not allowed. * Cancel the outstanding request. */ - tevent_req_cancel(req->subreq); + bool ok = tevent_req_cancel(req->subreq); + if (ok) { + return NT_STATUS_OK; + } + TALLOC_FREE(req->subreq); return smbd_smb2_request_error(req, - NT_STATUS_INSUFFICIENT_RESOURCES); + NT_STATUS_INTERNAL_ERROR); } if (DEBUGLEVEL >= 10) { |