diff options
-rw-r--r-- | src/providers/data_provider.h | 12 | ||||
-rw-r--r-- | src/providers/krb5/krb5_child.c | 2 | ||||
-rw-r--r-- | src/responder/pam/pamsrv_cmd.c | 2 | ||||
-rw-r--r-- | src/tests/krb5_child-test.c | 2 | ||||
-rw-r--r-- | src/tests/krb5_utils-tests.c | 2 |
5 files changed, 16 insertions, 4 deletions
diff --git a/src/providers/data_provider.h b/src/providers/data_provider.h index 8e475d229..2ce16e859 100644 --- a/src/providers/data_provider.h +++ b/src/providers/data_provider.h @@ -202,6 +202,18 @@ struct pam_data { #define SSS_KRB5_INFO_TGT_LIFETIME (SSS_SERVER_INFO|SSS_KRB5_INFO|0x01) #define SSS_KRB5_INFO_UPN (SSS_SERVER_INFO|SSS_KRB5_INFO|0x02) +/** + * @brief Create new zero initialized struct pam_data. + * + * @param mem_ctx A memory context use to allocate the internal data + * @return A pointer to new struct pam_data + * NULL on error + * + * NOTE: This function should be the only way, how to create new empty + * struct pam_data, because this function automatically initialize sub + * structures and set destructor to created object. + */ +struct pam_data *create_pam_data(TALLOC_CTX *mem_ctx); errno_t copy_pam_data(TALLOC_CTX *mem_ctx, struct pam_data *old_pd, struct pam_data **new_pd); void pam_print_data(int l, struct pam_data *pd); diff --git a/src/providers/krb5/krb5_child.c b/src/providers/krb5/krb5_child.c index 656853335..52127b39a 100644 --- a/src/providers/krb5/krb5_child.c +++ b/src/providers/krb5/krb5_child.c @@ -1556,7 +1556,7 @@ static errno_t unpack_buffer(uint8_t *buf, size_t size, if (!offline || !kr) return EINVAL; - pd = talloc_zero(kr, struct pam_data); + pd = create_pam_data(kr); if (pd == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, ("talloc_zero failed.\n")); return ENOMEM; diff --git a/src/responder/pam/pamsrv_cmd.c b/src/responder/pam/pamsrv_cmd.c index 647f82762..fa6cf23cd 100644 --- a/src/responder/pam/pamsrv_cmd.c +++ b/src/responder/pam/pamsrv_cmd.c @@ -758,7 +758,7 @@ static int pam_forwarder(struct cli_ctx *cctx, int pam_cmd) } preq->cctx = cctx; - preq->pd = talloc_zero(preq, struct pam_data); + preq->pd = create_pam_data(preq); if (!preq->pd) { talloc_free(preq); return ENOMEM; diff --git a/src/tests/krb5_child-test.c b/src/tests/krb5_child-test.c index f6ddcaad2..302cf3c8e 100644 --- a/src/tests/krb5_child-test.c +++ b/src/tests/krb5_child-test.c @@ -169,7 +169,7 @@ create_dummy_pam_data(TALLOC_CTX *mem_ctx, const char *user, size_t authtok_len; errno_t ret; - pd = talloc_zero(mem_ctx, struct pam_data); + pd = create_pam_data(mem_ctx); if (!pd) goto fail; pd->cmd = SSS_PAM_AUTHENTICATE; diff --git a/src/tests/krb5_utils-tests.c b/src/tests/krb5_utils-tests.c index aa2f4ed4b..fdfe00ac2 100644 --- a/src/tests/krb5_utils-tests.c +++ b/src/tests/krb5_utils-tests.c @@ -425,7 +425,7 @@ void setup_talloc_context(void) kr = talloc_zero(tmp_ctx, struct krb5child_req); fail_unless(kr != NULL, "Cannot create krb5child_req structure."); - pd = talloc_zero(tmp_ctx, struct pam_data); + pd = create_pam_data(tmp_ctx); fail_unless(pd != NULL, "Cannot create pam_data structure."); krb5_ctx = talloc_zero(tmp_ctx, struct krb5_ctx); |