From c5a320988e10f8fff6e3b3d0d5868aca67c8bb4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dag-Erling=20Sm=C3=B8rgrav?= Date: Sat, 21 Jan 2017 15:15:29 +0000 Subject: [PATCH] In pam_*env(3), set errno as the corresponding POSIX functions would. git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@914 185d5e19-27fe-0310-9dcf-9bff6b9f3609 --- lib/libpam/openpam_findenv.c | 2 ++ lib/libpam/pam_getenv.c | 5 ++++- lib/libpam/pam_putenv.c | 5 ++++- lib/libpam/pam_setenv.c | 5 ++++- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/libpam/openpam_findenv.c b/lib/libpam/openpam_findenv.c index 1e2854c..23e3196 100644 --- a/lib/libpam/openpam_findenv.c +++ b/lib/libpam/openpam_findenv.c @@ -39,6 +39,7 @@ # include "config.h" #endif +#include #include #include @@ -63,6 +64,7 @@ openpam_findenv(pam_handle_t *pamh, if (strncmp(pamh->env[i], name, len) == 0 && pamh->env[i][len] == '=') RETURNN(i); + errno = ENOENT; RETURNN(-1); } diff --git a/lib/libpam/pam_getenv.c b/lib/libpam/pam_getenv.c index 94f9de7..86dc25e 100644 --- a/lib/libpam/pam_getenv.c +++ b/lib/libpam/pam_getenv.c @@ -39,6 +39,7 @@ # include "config.h" #endif +#include #include #include @@ -61,8 +62,10 @@ pam_getenv(pam_handle_t *pamh, int i; ENTERS(name); - if (strchr(name, '=') != NULL) + if (strchr(name, '=') != NULL) { + errno = EINVAL; RETURNS(NULL); + } if ((i = openpam_findenv(pamh, name, strlen(name))) < 0) RETURNS(NULL); if ((str = strchr(pamh->env[i], '=')) == NULL) diff --git a/lib/libpam/pam_putenv.c b/lib/libpam/pam_putenv.c index 4e61db5..d7ac410 100644 --- a/lib/libpam/pam_putenv.c +++ b/lib/libpam/pam_putenv.c @@ -39,6 +39,7 @@ # include "config.h" #endif +#include #include #include @@ -64,8 +65,10 @@ pam_putenv(pam_handle_t *pamh, ENTER(); /* sanity checks */ - if ((p = strchr(namevalue, '=')) == NULL) + if ((p = strchr(namevalue, '=')) == NULL) { + errno = EINVAL; RETURNC(PAM_SYSTEM_ERR); + } /* see if the variable is already in the environment */ if ((i = openpam_findenv(pamh, namevalue, p - namevalue)) >= 0) { diff --git a/lib/libpam/pam_setenv.c b/lib/libpam/pam_setenv.c index 0ee7724..6cf68c7 100644 --- a/lib/libpam/pam_setenv.c +++ b/lib/libpam/pam_setenv.c @@ -39,6 +39,7 @@ # include "config.h" #endif +#include #include #include #include @@ -67,8 +68,10 @@ pam_setenv(pam_handle_t *pamh, ENTER(); /* sanity checks */ - if (*name == '\0' || strchr(name, '=') != NULL) + if (*name == '\0' || strchr(name, '=') != NULL) { + errno = EINVAL; RETURNC(PAM_SYSTEM_ERR); + } /* is it already there? */ if (!overwrite && openpam_findenv(pamh, name, strlen(name)) >= 0)