diff options
-rw-r--r-- | src/responder/common/responder.h | 2 | ||||
-rw-r--r-- | src/responder/common/responder_cmd.c | 37 | ||||
-rw-r--r-- | src/responder/nss/nsssrv_cmd.c | 37 | ||||
-rw-r--r-- | src/responder/nss/nsssrv_netgroup.c | 4 | ||||
-rw-r--r-- | src/responder/nss/nsssrv_private.h | 3 | ||||
-rw-r--r-- | src/responder/nss/nsssrv_services.c | 4 |
6 files changed, 46 insertions, 41 deletions
diff --git a/src/responder/common/responder.h b/src/responder/common/responder.h index b8d7f8ab..c60eeab2 100644 --- a/src/responder/common/responder.h +++ b/src/responder/common/responder.h @@ -155,6 +155,8 @@ struct sss_domain_info * responder_get_domain(struct sss_domain_info *doms, const char *domain); /* responder_cmd.c */ +int sss_cmd_empty_packet(struct sss_packet *packet); +int sss_cmd_send_empty(struct cli_ctx *cctx, TALLOC_CTX *freectx); int sss_cmd_execute(struct cli_ctx *cctx, struct sss_cmd_table *sss_cmds); void sss_cmd_done(struct cli_ctx *cctx, void *freectx); int sss_cmd_get_version(struct cli_ctx *cctx); diff --git a/src/responder/common/responder_cmd.c b/src/responder/common/responder_cmd.c index cd989030..bf0bb82b 100644 --- a/src/responder/common/responder_cmd.c +++ b/src/responder/common/responder_cmd.c @@ -23,6 +23,43 @@ #include "responder/common/responder.h" #include "responder/common/responder_packet.h" +int sss_cmd_empty_packet(struct sss_packet *packet) +{ + uint8_t *body; + size_t blen; + int ret; + + ret = sss_packet_grow(packet, 2*sizeof(uint32_t)); + if (ret != EOK) return ret; + + sss_packet_get_body(packet, &body, &blen); + ((uint32_t *)body)[0] = 0; /* num results */ + ((uint32_t *)body)[1] = 0; /* reserved */ + + return EOK; +} + +int sss_cmd_send_empty(struct cli_ctx *cctx, TALLOC_CTX *freectx) +{ + int ret; + + /* create response packet */ + ret = sss_packet_new(cctx->creq, 0, + sss_packet_get_cmd(cctx->creq->in), + &cctx->creq->out); + if (ret != EOK) { + return ret; + } + + ret = sss_cmd_empty_packet(cctx->creq->out); + if (ret != EOK) { + return ret; + } + + sss_packet_set_error(cctx->creq->out, EOK); + sss_cmd_done(cctx, freectx); + return EOK; +} void sss_cmd_done(struct cli_ctx *cctx, void *freectx) { diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index 579c7602..bbb115c8 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -46,41 +46,10 @@ static int nss_cmd_send_error(struct nss_cmd_ctx *cmdctx, int err) return EOK; } -int fill_empty(struct sss_packet *packet) -{ - uint8_t *body; - size_t blen; - int ret; - - ret = sss_packet_grow(packet, 2*sizeof(uint32_t)); - if (ret != EOK) return ret; - - sss_packet_get_body(packet, &body, &blen); - ((uint32_t *)body)[0] = 0; /* num results */ - ((uint32_t *)body)[1] = 0; /* reserved */ - - return EOK; -} - static int nss_cmd_send_empty(struct nss_cmd_ctx *cmdctx) { struct cli_ctx *cctx = cmdctx->cctx; - int ret; - - /* create response packet */ - ret = sss_packet_new(cctx->creq, 0, - sss_packet_get_cmd(cctx->creq->in), - &cctx->creq->out); - if (ret != EOK) { - return ret; - } - ret = fill_empty(cctx->creq->out); - if (ret != EOK) { - return ret; - } - sss_packet_set_error(cctx->creq->out, EOK); - sss_cmd_done(cctx, cmdctx); - return EOK; + return sss_cmd_send_empty(cctx, cmdctx); } int nss_cmd_done(struct nss_cmd_ctx *cmdctx, int ret) @@ -1674,7 +1643,7 @@ static int nss_cmd_retpwent(struct cli_ctx *cctx, int num) none: if (ret == ENOENT) { - ret = fill_empty(cctx->creq->out); + ret = sss_cmd_empty_packet(cctx->creq->out); } return ret; } @@ -2913,7 +2882,7 @@ static int nss_cmd_retgrent(struct cli_ctx *cctx, int num) none: if (ret == ENOENT) { - ret = fill_empty(cctx->creq->out); + ret = sss_cmd_empty_packet(cctx->creq->out); } return ret; } diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c index bb047d6a..093329fa 100644 --- a/src/responder/nss/nsssrv_netgroup.c +++ b/src/responder/nss/nsssrv_netgroup.c @@ -618,7 +618,7 @@ static void nss_cmd_setnetgrent_done(struct tevent_req *req) if (ret == EOK) { if (reqret == ENOENT) { /* Notify the caller that this entry wasn't found */ - fill_empty(cmdctx->cctx->creq->out); + sss_cmd_empty_packet(cmdctx->cctx->creq->out); } else { packet = cmdctx->cctx->creq->out; ret = sss_packet_grow(packet, 2*sizeof(uint32_t)); @@ -803,7 +803,7 @@ static errno_t nss_cmd_getnetgrent_process(struct nss_cmd_ctx *cmdctx, if (!netgr->entries || netgr->entries[0] == NULL) { /* No entries */ DEBUG(5, ("No entries found\n")); - ret = fill_empty(client->creq->out); + ret = sss_cmd_empty_packet(client->creq->out); if (ret != EOK) { return nss_cmd_done(cmdctx, ret); } diff --git a/src/responder/nss/nsssrv_private.h b/src/responder/nss/nsssrv_private.h index 83936fac..876552fb 100644 --- a/src/responder/nss/nsssrv_private.h +++ b/src/responder/nss/nsssrv_private.h @@ -109,9 +109,6 @@ struct setent_step_ctx { /* Finish the request */ int nss_cmd_done(struct nss_cmd_ctx *cmdctx, int ret); -/* Respond with no entries */ -int fill_empty(struct sss_packet *packet); - int setent_remove_ref(TALLOC_CTX *ctx); errno_t setent_add_ref(TALLOC_CTX *memctx, struct getent_ctx *getent_ctx, diff --git a/src/responder/nss/nsssrv_services.c b/src/responder/nss/nsssrv_services.c index 9013c682..da37708b 100644 --- a/src/responder/nss/nsssrv_services.c +++ b/src/responder/nss/nsssrv_services.c @@ -994,7 +994,7 @@ nss_cmd_getserv_done(struct tevent_req *req) if (ret == EOK) { if (reqret == ENOENT) { /* Notify the caller that this entry wasn't found */ - ret = fill_empty(cmdctx->cctx->creq->out); + ret = sss_cmd_empty_packet(cmdctx->cctx->creq->out); } else { i = dctx->res->count; ret = fill_service(cmdctx->cctx->creq->out, @@ -1793,7 +1793,7 @@ retservent(struct cli_ctx *cctx, int num) none: if (ret == ENOENT) { - ret = fill_empty(cctx->creq->out); + ret = sss_cmd_empty_packet(cctx->creq->out); } return ret; } |