libsmb: Fix valgrind errors in cli_smb2_get_reparse_point
authorVolker Lendecke <vl@samba.org>
Tue, 26 Mar 2019 09:56:27 +0000 (10:56 +0100)
committerJeremy Allison <jra@samba.org>
Wed, 27 Mar 2019 11:20:23 +0000 (11:20 +0000)
Both tevent_req_nterror and tevent_req_is_nterror invalidate
"state". Pull the variables out of "state" before calling those two
functions.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/libsmb/cli_smb2_fnum.c

index 44786ca5912f8b686aa4c428afc92e33b89f5da7..33bc31592a4fedb44f2a8ebef41a0bfc68aba30e 100644 (file)
@@ -5182,6 +5182,7 @@ static void cli_smb2_get_reparse_point_fnum_done(struct tevent_req *subreq)
                subreq, struct tevent_req);
        struct cli_smb2_get_reparse_point_fnum_state *state = tevent_req_data(
                req, struct cli_smb2_get_reparse_point_fnum_state);
+       struct cli_state *cli = state->cli;
        NTSTATUS status;
 
        status = smb2cli_ioctl_recv(subreq, state,
@@ -5189,7 +5190,7 @@ static void cli_smb2_get_reparse_point_fnum_done(struct tevent_req *subreq)
                                &state->output_buffer);
        TALLOC_FREE(subreq);
        if (tevent_req_nterror(req, status)) {
-               state->cli->raw_status = status;
+               cli->raw_status = status;
                return;
        }
        tevent_req_done(req);
@@ -5203,8 +5204,9 @@ NTSTATUS cli_smb2_get_reparse_point_fnum_recv(struct tevent_req *req,
                req, struct cli_smb2_get_reparse_point_fnum_state);
 
        if (tevent_req_is_nterror(req, &state->cli->raw_status)) {
+               NTSTATUS status = state->cli->raw_status;
                tevent_req_received(req);
-               return state->cli->raw_status;
+               return status;
        }
        *output = data_blob_dup_talloc(mem_ctx, state->output_buffer);
        if (output->data == NULL) {