openpam_load.c (186063) | openpam_load.c (228690) |
---|---|
1/*- 2 * Copyright (c) 2002-2003 Networks Associates Technology, Inc. | 1/*- 2 * Copyright (c) 2002-2003 Networks Associates Technology, Inc. |
3 * Copyright (c) 2004-2007 Dag-Erling Sm��rgrav | 3 * Copyright (c) 2004-2011 Dag-Erling Sm��rgrav |
4 * All rights reserved. 5 * 6 * This software was developed for the FreeBSD Project by ThinkSec AS and 7 * Network Associates Laboratories, the Security Research Division of 8 * Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 9 * ("CBOSS"), as part of the DARPA CHATS research program. 10 * 11 * Redistribution and use in source and binary forms, with or without --- 15 unchanged lines hidden (view full) --- 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * | 4 * All rights reserved. 5 * 6 * This software was developed for the FreeBSD Project by ThinkSec AS and 7 * Network Associates Laboratories, the Security Research Division of 8 * Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 9 * ("CBOSS"), as part of the DARPA CHATS research program. 10 * 11 * Redistribution and use in source and binary forms, with or without --- 15 unchanged lines hidden (view full) --- 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * |
35 * $Id: openpam_load.c 408 2007-12-21 11:36:24Z des $ | 35 * $Id: openpam_load.c 491 2011-11-12 00:12:32Z des $ |
36 */ 37 | 36 */ 37 |
38#ifdef HAVE_CONFIG_H 39# include "config.h" 40#endif 41 |
|
38#include <dlfcn.h> 39#include <stdlib.h> 40#include <string.h> 41 42#include <security/pam_appl.h> 43 44#include "openpam_impl.h" 45 | 42#include <dlfcn.h> 43#include <stdlib.h> 44#include <string.h> 45 46#include <security/pam_appl.h> 47 48#include "openpam_impl.h" 49 |
46const char *_pam_func_name[PAM_NUM_PRIMITIVES] = { 47 "pam_authenticate", 48 "pam_setcred", 49 "pam_acct_mgmt", 50 "pam_open_session", 51 "pam_close_session", 52 "pam_chauthtok" 53}; 54 55const char *_pam_sm_func_name[PAM_NUM_PRIMITIVES] = { 56 "pam_sm_authenticate", 57 "pam_sm_setcred", 58 "pam_sm_acct_mgmt", 59 "pam_sm_open_session", 60 "pam_sm_close_session", 61 "pam_sm_chauthtok" 62}; 63 | |
64/* 65 * Locate a matching dynamic or static module. 66 */ 67 68pam_module_t * 69openpam_load_module(const char *path) 70{ 71 pam_module_t *module; --- 45 unchanged lines hidden (view full) --- 117 118static void 119openpam_destroy_chain(pam_chain_t *chain) 120{ 121 if (chain == NULL) 122 return; 123 openpam_destroy_chain(chain->next); 124 chain->next = NULL; | 50/* 51 * Locate a matching dynamic or static module. 52 */ 53 54pam_module_t * 55openpam_load_module(const char *path) 56{ 57 pam_module_t *module; --- 45 unchanged lines hidden (view full) --- 103 104static void 105openpam_destroy_chain(pam_chain_t *chain) 106{ 107 if (chain == NULL) 108 return; 109 openpam_destroy_chain(chain->next); 110 chain->next = NULL; |
125 while (chain->optc) { 126 --chain->optc; | 111 while (chain->optc--) |
127 FREE(chain->optv[chain->optc]); | 112 FREE(chain->optv[chain->optc]); |
128 } | |
129 FREE(chain->optv); 130 openpam_release_module(chain->module); 131 chain->module = NULL; 132 FREE(chain); 133} 134 135 136/* --- 17 unchanged lines hidden --- | 113 FREE(chain->optv); 114 openpam_release_module(chain->module); 115 chain->module = NULL; 116 FREE(chain); 117} 118 119 120/* --- 17 unchanged lines hidden --- |