diff --git a/lib/openpam_set_option.c b/lib/openpam_set_option.c index b41c3f9..cd8271d 100644 --- a/lib/openpam_set_option.c +++ b/lib/openpam_set_option.c @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/openpam/lib/openpam_set_option.c#10 $ + * $P4: //depot/projects/openpam/lib/openpam_set_option.c#11 $ */ #include @@ -82,9 +82,8 @@ openpam_set_option(pam_handle_t *pamh, cur->optv[i] = NULL; RETURNC(PAM_SUCCESS); } - if ((opt = malloc(len + strlen(value) + 2)) == NULL) + if (asprintf(&opt, "%.*s=%s", (int)len, option, value) < 0) RETURNC(PAM_BUF_ERR); - sprintf(opt, "%.*s=%s", (int)len, option, value); if (i == cur->optc) { /* add */ optv = realloc(cur->optv, sizeof(char *) * (cur->optc + 2)); diff --git a/lib/pam_setenv.c b/lib/pam_setenv.c index 1d47422..02ffe23 100644 --- a/lib/pam_setenv.c +++ b/lib/pam_setenv.c @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/openpam/lib/pam_setenv.c#9 $ + * $P4: //depot/projects/openpam/lib/pam_setenv.c#10 $ */ #include @@ -71,9 +71,8 @@ pam_setenv(pam_handle_t *pamh, RETURNC(PAM_SUCCESS); /* set it... */ - if ((env = malloc(strlen(name) + strlen(value) + 2)) == NULL) + if (asprintf(&env, "%s=%s", name, value) < 0) RETURNC(PAM_BUF_ERR); - sprintf(env, "%s=%s", name, value); r = pam_putenv(pamh, env); FREE(env); RETURNC(r);