s4:rpc_server: convert dcesrv_auth_response() into a generic dcesrv_auth_pkt_push()
authorStefan Metzmacher <metze@samba.org>
Fri, 23 Oct 2015 14:06:17 +0000 (16:06 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Wed, 26 Oct 2016 09:20:16 +0000 (11:20 +0200)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source4/rpc_server/common/reply.c
source4/rpc_server/dcesrv_auth.c

index 10b7711f7deab2aad07adbbb0fe566dcd366fe0c..a24fc6430befca0df30ce25f4c3faf8780ada19d 100644 (file)
@@ -225,6 +225,7 @@ _PUBLIC_ NTSTATUS dcesrv_reply(struct dcesrv_call_state *call)
                uint32_t length;
                struct data_blob_list_item *rep;
                struct ncacn_packet pkt;
+               bool ok;
 
                rep = talloc_zero(call, struct data_blob_list_item);
                NT_STATUS_HAVE_NO_MEMORY(rep);
@@ -250,7 +251,11 @@ _PUBLIC_ NTSTATUS dcesrv_reply(struct dcesrv_call_state *call)
                pkt.u.response.stub_and_verifier.data = stub.data;
                pkt.u.response.stub_and_verifier.length = length;
 
-               if (!dcesrv_auth_response(call, &rep->blob, sig_size, &pkt)) {
+               ok = dcesrv_auth_pkt_push(call, &rep->blob, sig_size,
+                                         DCERPC_RESPONSE_LENGTH,
+                                         &pkt.u.response.stub_and_verifier,
+                                         &pkt);
+               if (!ok) {
                        return dcesrv_fault(call, DCERPC_FAULT_OTHER);
                }
 
index 36c0011f1b5c090bbe9eec94b5426438efa124a9..af0079beabb95e817fec819d6415994cf1baa529 100644 (file)
@@ -521,12 +521,13 @@ bool dcesrv_auth_pkt_pull(struct dcesrv_call_state *call,
        return true;
 }
 
-
 /* 
    push a signed or sealed dcerpc request packet into a blob
 */
-bool dcesrv_auth_response(struct dcesrv_call_state *call,
+bool dcesrv_auth_pkt_push(struct dcesrv_call_state *call,
                          DATA_BLOB *blob, size_t sig_size,
+                         uint8_t payload_offset,
+                         const DATA_BLOB *payload,
                          const struct ncacn_packet *pkt)
 {
        struct dcesrv_connection *dce_conn = call->conn;
@@ -540,8 +541,8 @@ bool dcesrv_auth_response(struct dcesrv_call_state *call,
        status = dcerpc_ncacn_push_pkt_auth(&tmp_auth,
                                            dce_conn->auth_state.gensec_security,
                                            call, blob, sig_size,
-                                           DCERPC_RESPONSE_LENGTH,
-                                           &pkt->u.response.stub_and_verifier,
+                                           payload_offset,
+                                           payload,
                                            pkt);
        return NT_STATUS_IS_OK(status);
 }