With one single exception (where the pointer is obviously being
immediately overwritten), replace all use of free(3) with a macro that clears the pointer after freeing the memory it pointed to. Suggested by: Dmitry V. Levin <ldv@altlinux.org> git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@232 185d5e19-27fe-0310-9dcf-9bff6b9f3609
This commit is contained in:
parent
bd68953705
commit
570d0c7751
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/openpam_borrow_cred.c#6 $
|
* $P4: //depot/projects/openpam/lib/openpam_borrow_cred.c#7 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
@ -77,13 +77,13 @@ openpam_borrow_cred(pam_handle_t *pamh,
|
||||||
scred->egid = getegid();
|
scred->egid = getegid();
|
||||||
r = getgroups(NGROUPS_MAX, scred->groups);
|
r = getgroups(NGROUPS_MAX, scred->groups);
|
||||||
if (r == -1) {
|
if (r == -1) {
|
||||||
free(scred);
|
FREE(scred);
|
||||||
RETURNC(PAM_SYSTEM_ERR);
|
RETURNC(PAM_SYSTEM_ERR);
|
||||||
}
|
}
|
||||||
scred->ngroups = r;
|
scred->ngroups = r;
|
||||||
r = pam_set_data(pamh, PAM_SAVED_CRED, scred, &openpam_free_data);
|
r = pam_set_data(pamh, PAM_SAVED_CRED, scred, &openpam_free_data);
|
||||||
if (r != PAM_SUCCESS) {
|
if (r != PAM_SUCCESS) {
|
||||||
free(scred);
|
FREE(scred);
|
||||||
RETURNC(r);
|
RETURNC(r);
|
||||||
}
|
}
|
||||||
if (geteuid() == pwd->pw_uid)
|
if (geteuid() == pwd->pw_uid)
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/openpam_configure.c#6 $
|
* $P4: //depot/projects/openpam/lib/openpam_configure.c#7 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
@ -238,7 +238,7 @@ openpam_load_policy(pam_chain_t *policy[],
|
||||||
strcat(filename, service);
|
strcat(filename, service);
|
||||||
r = openpam_read_policy_file(policy,
|
r = openpam_read_policy_file(policy,
|
||||||
service, filename, PAM_D_STYLE);
|
service, filename, PAM_D_STYLE);
|
||||||
free(filename);
|
FREE(filename);
|
||||||
} else {
|
} else {
|
||||||
r = openpam_read_policy_file(policy,
|
r = openpam_read_policy_file(policy,
|
||||||
service, *path, PAM_CONF_STYLE);
|
service, *path, PAM_CONF_STYLE);
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/openpam_dynamic.c#9 $
|
* $P4: //depot/projects/openpam/lib/openpam_dynamic.c#10 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
@ -69,11 +69,11 @@ openpam_dynamic(const char *path)
|
||||||
*strrchr(vpath, '.') = '\0';
|
*strrchr(vpath, '.') = '\0';
|
||||||
if ((dlh = dlopen(vpath, RTLD_LAZY)) == NULL) {
|
if ((dlh = dlopen(vpath, RTLD_LAZY)) == NULL) {
|
||||||
openpam_log(PAM_LOG_DEBUG, "%s: %s", vpath, dlerror());
|
openpam_log(PAM_LOG_DEBUG, "%s: %s", vpath, dlerror());
|
||||||
free(module);
|
FREE(module);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(vpath);
|
FREE(vpath);
|
||||||
if ((module->path = strdup(path)) == NULL)
|
if ((module->path = strdup(path)) == NULL)
|
||||||
goto buf_err;
|
goto buf_err;
|
||||||
module->dlh = dlh;
|
module->dlh = dlh;
|
||||||
|
@ -88,7 +88,7 @@ openpam_dynamic(const char *path)
|
||||||
openpam_log(PAM_LOG_ERROR, "%m");
|
openpam_log(PAM_LOG_ERROR, "%m");
|
||||||
if (dlh != NULL)
|
if (dlh != NULL)
|
||||||
dlclose(dlh);
|
dlclose(dlh);
|
||||||
free(module);
|
FREE(module);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/openpam_free_data.c#3 $
|
* $P4: //depot/projects/openpam/lib/openpam_free_data.c#4 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -54,7 +54,7 @@ openpam_free_data(pam_handle_t *pamh, void *data, int status)
|
||||||
ENTER();
|
ENTER();
|
||||||
(void)pamh;
|
(void)pamh;
|
||||||
(void)status;
|
(void)status;
|
||||||
free(data);
|
FREE(data);
|
||||||
RETURNV();
|
RETURNV();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/openpam_impl.h#22 $
|
* $P4: //depot/projects/openpam/lib/openpam_impl.h#23 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _OPENPAM_IMPL_H_INCLUDED
|
#ifndef _OPENPAM_IMPL_H_INCLUDED
|
||||||
|
@ -124,6 +124,8 @@ pam_module_t *openpam_static(const char *);
|
||||||
#endif
|
#endif
|
||||||
pam_module_t *openpam_dynamic(const char *);
|
pam_module_t *openpam_dynamic(const char *);
|
||||||
|
|
||||||
|
#define FREE(p) do { free((p)); (p) = NULL; } while (0);
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#define ENTER() openpam_log(PAM_LOG_DEBUG, "entering")
|
#define ENTER() openpam_log(PAM_LOG_DEBUG, "entering")
|
||||||
#define ENTERI(i) do { \
|
#define ENTERI(i) do { \
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/openpam_load.c#15 $
|
* $P4: //depot/projects/openpam/lib/openpam_load.c#16 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
@ -136,8 +136,8 @@ openpam_release_module(pam_module_t *module)
|
||||||
if (module == modules)
|
if (module == modules)
|
||||||
modules = module->next;
|
modules = module->next;
|
||||||
openpam_log(PAM_LOG_DEBUG, "releasing %s", module->path);
|
openpam_log(PAM_LOG_DEBUG, "releasing %s", module->path);
|
||||||
free(module->path);
|
FREE(module->path);
|
||||||
free(module);
|
FREE(module);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -154,10 +154,10 @@ openpam_destroy_chain(pam_chain_t *chain)
|
||||||
openpam_destroy_chain(chain->next);
|
openpam_destroy_chain(chain->next);
|
||||||
chain->next = NULL;
|
chain->next = NULL;
|
||||||
while (chain->optc--)
|
while (chain->optc--)
|
||||||
free(chain->optv[chain->optc]);
|
FREE(chain->optv[chain->optc]);
|
||||||
free(chain->optv);
|
FREE(chain->optv);
|
||||||
openpam_release_module(chain->module);
|
openpam_release_module(chain->module);
|
||||||
free(chain);
|
FREE(chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/openpam_log.c#21 $
|
* $P4: //depot/projects/openpam/lib/openpam_log.c#22 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
@ -112,7 +112,7 @@ _openpam_log(int level, const char *func, const char *fmt, ...)
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
if (asprintf(&format, "in %s(): %s", func, fmt) > 0) {
|
if (asprintf(&format, "in %s(): %s", func, fmt) > 0) {
|
||||||
vsyslog(priority, format, ap);
|
vsyslog(priority, format, ap);
|
||||||
free(format);
|
FREE(format);
|
||||||
} else {
|
} else {
|
||||||
vsyslog(priority, fmt, ap);
|
vsyslog(priority, fmt, ap);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/openpam_set_option.c#9 $
|
* $P4: //depot/projects/openpam/lib/openpam_set_option.c#10 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
@ -89,7 +89,7 @@ openpam_set_option(pam_handle_t *pamh,
|
||||||
/* add */
|
/* add */
|
||||||
optv = realloc(cur->optv, sizeof(char *) * (cur->optc + 2));
|
optv = realloc(cur->optv, sizeof(char *) * (cur->optc + 2));
|
||||||
if (optv == NULL) {
|
if (optv == NULL) {
|
||||||
free(opt);
|
FREE(opt);
|
||||||
RETURNC(PAM_BUF_ERR);
|
RETURNC(PAM_BUF_ERR);
|
||||||
}
|
}
|
||||||
optv[i] = opt;
|
optv[i] = opt;
|
||||||
|
@ -98,7 +98,7 @@ openpam_set_option(pam_handle_t *pamh,
|
||||||
++cur->optc;
|
++cur->optc;
|
||||||
} else {
|
} else {
|
||||||
/* replace */
|
/* replace */
|
||||||
free(cur->optv[i]);
|
FREE(cur->optv[i]);
|
||||||
cur->optv[i] = opt;
|
cur->optv[i] = opt;
|
||||||
}
|
}
|
||||||
RETURNC(PAM_SUCCESS);
|
RETURNC(PAM_SUCCESS);
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/openpam_ttyconv.c#17 $
|
* $P4: //depot/projects/openpam/lib/openpam_ttyconv.c#18 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
@ -179,8 +179,8 @@ openpam_ttyconv(int n,
|
||||||
RETURNC(PAM_SUCCESS);
|
RETURNC(PAM_SUCCESS);
|
||||||
fail:
|
fail:
|
||||||
while (i)
|
while (i)
|
||||||
free(resp[--i]);
|
FREE(resp[--i]);
|
||||||
free(*resp);
|
FREE(*resp);
|
||||||
*resp = NULL;
|
*resp = NULL;
|
||||||
RETURNC(PAM_CONV_ERR);
|
RETURNC(PAM_CONV_ERR);
|
||||||
}
|
}
|
||||||
|
@ -199,7 +199,7 @@ openpam_ttyconv(int n,
|
||||||
* of most text-based interactive programs.
|
* of most text-based interactive programs.
|
||||||
*
|
*
|
||||||
* The =openpam_ttyconv function allows the application to specify a
|
* The =openpam_ttyconv function allows the application to specify a
|
||||||
* timeout for user input by setting the global variable
|
* timeout for user input by setting the global integer variable
|
||||||
* :openpam_ttyconv_timeout to the length of the timeout in seconds.
|
* :openpam_ttyconv_timeout to the length of the timeout in seconds.
|
||||||
*
|
*
|
||||||
* >openpam_nullconv
|
* >openpam_nullconv
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_end.c#11 $
|
* $P4: //depot/projects/openpam/lib/pam_end.c#12 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -63,14 +63,14 @@ pam_end(pam_handle_t *pamh,
|
||||||
if (dp->cleanup)
|
if (dp->cleanup)
|
||||||
(dp->cleanup)(pamh, dp->data, status);
|
(dp->cleanup)(pamh, dp->data, status);
|
||||||
pamh->module_data = dp->next;
|
pamh->module_data = dp->next;
|
||||||
free(dp->name);
|
FREE(dp->name);
|
||||||
free(dp);
|
FREE(dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* clear environment */
|
/* clear environment */
|
||||||
while (pamh->env_count)
|
while (pamh->env_count)
|
||||||
free(pamh->env[--pamh->env_count]);
|
FREE(pamh->env[--pamh->env_count]);
|
||||||
free(pamh->env);
|
FREE(pamh->env);
|
||||||
|
|
||||||
/* clear chains */
|
/* clear chains */
|
||||||
openpam_clear_chains(pamh->chains);
|
openpam_clear_chains(pamh->chains);
|
||||||
|
@ -79,7 +79,7 @@ pam_end(pam_handle_t *pamh,
|
||||||
for (i = 0; i < PAM_NUM_ITEMS; ++i)
|
for (i = 0; i < PAM_NUM_ITEMS; ++i)
|
||||||
pam_set_item(pamh, i, NULL);
|
pam_set_item(pamh, i, NULL);
|
||||||
|
|
||||||
free(pamh);
|
FREE(pamh);
|
||||||
|
|
||||||
RETURNC(PAM_SUCCESS);
|
RETURNC(PAM_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_error.c#8 $
|
* $P4: //depot/projects/openpam/lib/pam_error.c#9 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
@ -41,6 +41,8 @@
|
||||||
#include <security/pam_appl.h>
|
#include <security/pam_appl.h>
|
||||||
#include <security/openpam.h>
|
#include <security/openpam.h>
|
||||||
|
|
||||||
|
#include "openpam_impl.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OpenPAM extension
|
* OpenPAM extension
|
||||||
*
|
*
|
||||||
|
@ -59,7 +61,7 @@ pam_error(pam_handle_t *pamh,
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
r = pam_vprompt(pamh, PAM_ERROR_MSG, &rsp, fmt, ap);
|
r = pam_vprompt(pamh, PAM_ERROR_MSG, &rsp, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
free(rsp); /* ignore response */
|
FREE(rsp); /* ignore response */
|
||||||
return (r);
|
return (r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_get_authtok.c#22 $
|
* $P4: //depot/projects/openpam/lib/pam_get_authtok.c#23 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
@ -109,19 +109,19 @@ pam_get_authtok(pam_handle_t *pamh,
|
||||||
if (twice) {
|
if (twice) {
|
||||||
r = pam_prompt(pamh, style, &resp2, "Retype %s", prompt);
|
r = pam_prompt(pamh, style, &resp2, "Retype %s", prompt);
|
||||||
if (r != PAM_SUCCESS) {
|
if (r != PAM_SUCCESS) {
|
||||||
free(resp);
|
FREE(resp);
|
||||||
RETURNC(r);
|
RETURNC(r);
|
||||||
}
|
}
|
||||||
if (strcmp(resp, resp2) != 0) {
|
if (strcmp(resp, resp2) != 0) {
|
||||||
free(resp);
|
FREE(resp);
|
||||||
resp = NULL;
|
resp = NULL;
|
||||||
}
|
}
|
||||||
free(resp2);
|
FREE(resp2);
|
||||||
}
|
}
|
||||||
if (resp == NULL)
|
if (resp == NULL)
|
||||||
RETURNC(PAM_TRY_AGAIN);
|
RETURNC(PAM_TRY_AGAIN);
|
||||||
r = pam_set_item(pamh, item, resp);
|
r = pam_set_item(pamh, item, resp);
|
||||||
free(resp);
|
FREE(resp);
|
||||||
if (r != PAM_SUCCESS)
|
if (r != PAM_SUCCESS)
|
||||||
RETURNC(r);
|
RETURNC(r);
|
||||||
r = pam_get_item(pamh, item, (const void **)authtok);
|
r = pam_get_item(pamh, item, (const void **)authtok);
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_get_user.c#15 $
|
* $P4: //depot/projects/openpam/lib/pam_get_user.c#16 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
@ -75,7 +75,7 @@ pam_get_user(pam_handle_t *pamh,
|
||||||
if (r != PAM_SUCCESS)
|
if (r != PAM_SUCCESS)
|
||||||
RETURNC(r);
|
RETURNC(r);
|
||||||
r = pam_set_item(pamh, PAM_USER, resp);
|
r = pam_set_item(pamh, PAM_USER, resp);
|
||||||
free(resp);
|
FREE(resp);
|
||||||
if (r != PAM_SUCCESS)
|
if (r != PAM_SUCCESS)
|
||||||
RETURNC(r);
|
RETURNC(r);
|
||||||
r = pam_get_item(pamh, PAM_USER, (const void **)user);
|
r = pam_get_item(pamh, PAM_USER, (const void **)user);
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_getenvlist.c#10 $
|
* $P4: //depot/projects/openpam/lib/pam_getenvlist.c#11 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -66,8 +66,8 @@ pam_getenvlist(pam_handle_t *pamh)
|
||||||
for (i = 0; i < pamh->env_count; ++i) {
|
for (i = 0; i < pamh->env_count; ++i) {
|
||||||
if ((envlist[i] = strdup(pamh->env[i])) == NULL) {
|
if ((envlist[i] = strdup(pamh->env[i])) == NULL) {
|
||||||
while (i)
|
while (i)
|
||||||
free(envlist[--i]);
|
FREE(envlist[--i]);
|
||||||
free(envlist);
|
FREE(envlist);
|
||||||
openpam_log(PAM_LOG_ERROR, "%s",
|
openpam_log(PAM_LOG_ERROR, "%s",
|
||||||
pam_strerror(pamh, PAM_BUF_ERR));
|
pam_strerror(pamh, PAM_BUF_ERR));
|
||||||
RETURNP(NULL);
|
RETURNP(NULL);
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_info.c#7 $
|
* $P4: //depot/projects/openpam/lib/pam_info.c#8 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
@ -41,6 +41,8 @@
|
||||||
#include <security/pam_appl.h>
|
#include <security/pam_appl.h>
|
||||||
#include <security/openpam.h>
|
#include <security/openpam.h>
|
||||||
|
|
||||||
|
#include "openpam_impl.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OpenPAM extension
|
* OpenPAM extension
|
||||||
*
|
*
|
||||||
|
@ -59,7 +61,7 @@ pam_info(pam_handle_t *pamh,
|
||||||
va_start(ap, fmt);
|
va_start(ap, fmt);
|
||||||
r = pam_vprompt(pamh, PAM_TEXT_INFO, &rsp, fmt, ap);
|
r = pam_vprompt(pamh, PAM_TEXT_INFO, &rsp, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
free(rsp); /* ignore response */
|
FREE(rsp); /* ignore response */
|
||||||
return (r);
|
return (r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_putenv.c#9 $
|
* $P4: //depot/projects/openpam/lib/pam_putenv.c#10 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -67,7 +67,7 @@ pam_putenv(pam_handle_t *pamh,
|
||||||
if ((i = openpam_findenv(pamh, namevalue, p - namevalue)) != -1) {
|
if ((i = openpam_findenv(pamh, namevalue, p - namevalue)) != -1) {
|
||||||
if ((p = strdup(namevalue)) == NULL)
|
if ((p = strdup(namevalue)) == NULL)
|
||||||
RETURNC(PAM_BUF_ERR);
|
RETURNC(PAM_BUF_ERR);
|
||||||
free(pamh->env[i]);
|
FREE(pamh->env[i]);
|
||||||
pamh->env[i] = p;
|
pamh->env[i] = p;
|
||||||
RETURNC(PAM_SUCCESS);
|
RETURNC(PAM_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_set_data.c#13 $
|
* $P4: //depot/projects/openpam/lib/pam_set_data.c#14 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -73,7 +73,7 @@ pam_set_data(pam_handle_t *pamh,
|
||||||
if ((dp = malloc(sizeof *dp)) == NULL)
|
if ((dp = malloc(sizeof *dp)) == NULL)
|
||||||
RETURNC(PAM_BUF_ERR);
|
RETURNC(PAM_BUF_ERR);
|
||||||
if ((dp->name = strdup(module_data_name)) == NULL) {
|
if ((dp->name = strdup(module_data_name)) == NULL) {
|
||||||
free(dp);
|
FREE(dp);
|
||||||
RETURNC(PAM_BUF_ERR);
|
RETURNC(PAM_BUF_ERR);
|
||||||
}
|
}
|
||||||
dp->data = data;
|
dp->data = data;
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_set_item.c#19 $
|
* $P4: //depot/projects/openpam/lib/pam_set_item.c#20 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
@ -90,7 +90,7 @@ pam_set_item(pam_handle_t *pamh,
|
||||||
}
|
}
|
||||||
if (*slot != NULL) {
|
if (*slot != NULL) {
|
||||||
memset(*slot, 0xd0, osize);
|
memset(*slot, 0xd0, osize);
|
||||||
free(*slot);
|
FREE(*slot);
|
||||||
}
|
}
|
||||||
if (item != NULL) {
|
if (item != NULL) {
|
||||||
if ((tmp = malloc(nsize)) == NULL)
|
if ((tmp = malloc(nsize)) == NULL)
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_setenv.c#8 $
|
* $P4: //depot/projects/openpam/lib/pam_setenv.c#9 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -75,7 +75,7 @@ pam_setenv(pam_handle_t *pamh,
|
||||||
RETURNC(PAM_BUF_ERR);
|
RETURNC(PAM_BUF_ERR);
|
||||||
sprintf(env, "%s=%s", name, value);
|
sprintf(env, "%s=%s", name, value);
|
||||||
r = pam_putenv(pamh, env);
|
r = pam_putenv(pamh, env);
|
||||||
free(env);
|
FREE(env);
|
||||||
RETURNC(r);
|
RETURNC(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_verror.c#6 $
|
* $P4: //depot/projects/openpam/lib/pam_verror.c#7 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
@ -40,6 +40,8 @@
|
||||||
#include <security/pam_appl.h>
|
#include <security/pam_appl.h>
|
||||||
#include <security/openpam.h>
|
#include <security/openpam.h>
|
||||||
|
|
||||||
|
#include "openpam_impl.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OpenPAM extension
|
* OpenPAM extension
|
||||||
*
|
*
|
||||||
|
@ -55,7 +57,7 @@ pam_verror(pam_handle_t *pamh,
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
r = pam_vprompt(pamh, PAM_ERROR_MSG, &rsp, fmt, ap);
|
r = pam_vprompt(pamh, PAM_ERROR_MSG, &rsp, fmt, ap);
|
||||||
free(rsp); /* ignore response */
|
FREE(rsp); /* ignore response */
|
||||||
return (r);
|
return (r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_vinfo.c#6 $
|
* $P4: //depot/projects/openpam/lib/pam_vinfo.c#7 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
@ -40,6 +40,8 @@
|
||||||
#include <security/pam_appl.h>
|
#include <security/pam_appl.h>
|
||||||
#include <security/openpam.h>
|
#include <security/openpam.h>
|
||||||
|
|
||||||
|
#include "openpam_impl.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OpenPAM extension
|
* OpenPAM extension
|
||||||
*
|
*
|
||||||
|
@ -55,7 +57,7 @@ pam_vinfo(pam_handle_t *pamh,
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
r = pam_vprompt(pamh, PAM_TEXT_INFO, &rsp, fmt, ap);
|
r = pam_vprompt(pamh, PAM_TEXT_INFO, &rsp, fmt, ap);
|
||||||
free(rsp); /* ignore response */
|
FREE(rsp); /* ignore response */
|
||||||
return (r);
|
return (r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $P4: //depot/projects/openpam/lib/pam_vprompt.c#10 $
|
* $P4: //depot/projects/openpam/lib/pam_vprompt.c#11 $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
@ -77,7 +77,7 @@ pam_vprompt(pam_handle_t *pamh,
|
||||||
rsp = NULL;
|
rsp = NULL;
|
||||||
r = (conv->conv)(1, &msgp, &rsp, conv->appdata_ptr);
|
r = (conv->conv)(1, &msgp, &rsp, conv->appdata_ptr);
|
||||||
*resp = rsp == NULL ? NULL : rsp->resp;
|
*resp = rsp == NULL ? NULL : rsp->resp;
|
||||||
free(rsp);
|
FREE(rsp);
|
||||||
RETURNC(r);
|
RETURNC(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue