summaryrefslogtreecommitdiffstats
path: root/src/responder/pam/pamsrv_cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/responder/pam/pamsrv_cmd.c')
-rw-r--r--src/responder/pam/pamsrv_cmd.c70
1 files changed, 2 insertions, 68 deletions
diff --git a/src/responder/pam/pamsrv_cmd.c b/src/responder/pam/pamsrv_cmd.c
index 85b356617..c967c67be 100644
--- a/src/responder/pam/pamsrv_cmd.c
+++ b/src/responder/pam/pamsrv_cmd.c
@@ -290,72 +290,6 @@ done:
return ret;
}
-static errno_t produce_packet(TALLOC_CTX *mem_ctx,
- struct pam_data *pd,
- enum sss_cli_command cmd,
- struct sss_packet **_out)
-{
- errno_t ret;
- uint8_t *body;
- size_t blen;
- int32_t resp_c;
- int32_t resp_size;
- struct response_data *resp;
- int p;
- struct sss_packet *out;
-
- ret = sss_packet_new(mem_ctx, 0, cmd, &out);
- if (ret != EOK) {
- goto done;
- }
-
- resp_c = 0;
- resp_size = 0;
- resp = pd->resp_list;
- while(resp != NULL) {
- if (!resp->do_not_send_to_client) {
- resp_c++;
- resp_size += resp->len;
- }
- resp = resp->next;
- }
-
- ret = sss_packet_grow(out, sizeof(int32_t) + sizeof(int32_t) +
- resp_c * 2 * sizeof(int32_t) + resp_size);
- if (ret != EOK) {
- goto done;
- }
-
- sss_packet_get_body(out, &body, &blen);
- DEBUG(SSSDBG_FUNC_DATA, "blen: %zu\n", blen);
- p = 0;
-
- memcpy(&body[p], &pd->pam_status, sizeof(int32_t));
- p += sizeof(int32_t);
-
- memcpy(&body[p], &resp_c, sizeof(int32_t));
- p += sizeof(int32_t);
-
- resp = pd->resp_list;
- while(resp != NULL) {
- if (!resp->do_not_send_to_client) {
- memcpy(&body[p], &resp->type, sizeof(int32_t));
- p += sizeof(int32_t);
- memcpy(&body[p], &resp->len, sizeof(int32_t));
- p += sizeof(int32_t);
- memcpy(&body[p], resp->data, resp->len);
- p += resp->len;
- }
-
- resp = resp->next;
- }
-
- *_out = out;
- ret = EOK;
-
-done:
- return ret;
-}
static int pam_forwarder(struct cli_ctx *cctx, int pam_cmd);
static void pam_handle_cached_login(struct pam_auth_req *preq, int ret,
@@ -520,8 +454,8 @@ static void pam_reply(struct pam_auth_req *preq)
}
}
- ret = produce_packet(cctx->creq, pd, sss_packet_get_cmd(cctx->creq->in),
- &cctx->creq->out);
+ ret = pamsrv_reply_packet(cctx->creq, pd, sss_packet_get_cmd(cctx->creq->in),
+ &cctx->creq->out);
if (ret != EOK) {
goto done;
}