Changeset 874 in openpam
- Timestamp:
- Dec 1, 2015, 7:40:01 PM (5 years ago)
- Location:
- trunk/t
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/t/Makefile.am
r867 r874 2 2 3 3 AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/lib/libpam 4 5 AM_TESTS_ENVIRONMENT = \ 6 PAM_RETURN_SO=$(abs_top_builddir)/modules/pam_return/.libs/pam_return.so 4 7 5 8 noinst_HEADERS = t.h t_pam_conv.h -
trunk/t/t_openpam_dispatch.c
r866 r874 46 46 #include "t_pam_conv.h" 47 47 48 const char *pam_return_so; 49 50 T_FUNC(null, "null handle") 51 { 52 int pam_err; 53 54 #if __clang__ 55 #pragma clang diagnostic push 56 #pragma clang diagnostic ignored "-Wnonnull" 57 #elif __GNUC__ 58 #pragma gcc diagnostic push 59 #pragma gcc diagnostic ignored "-Wnonnull" 60 #endif 61 pam_err = pam_authenticate(NULL, 0); 62 #if __clang__ 63 #pragma clang diagnostic pop 64 #elif __GNUC__ 65 #pragma gcc diagnostic pop 66 #endif 67 return (pam_err == PAM_SYSTEM_ERR); 68 } 69 48 70 T_FUNC(empty_policy, "empty policy") 49 71 { … … 90 112 } 91 113 114 static struct t_pam_return_case { 115 int facility; 116 int primitive; 117 int flags; 118 struct { 119 int ctlflag; 120 int modret; 121 } mod[2]; 122 int result; 123 } t_pam_return_cases[] = { 124 { 125 PAM_AUTH, PAM_SM_AUTHENTICATE, 0, 126 { 127 { PAM_REQUIRED, PAM_SUCCESS }, 128 { PAM_REQUIRED, PAM_SUCCESS }, 129 }, 130 PAM_SUCCESS, 131 }, 132 }; 133 134 T_FUNC(mod_return, "module return value") 135 { 136 struct t_pam_return_case *tc; 137 struct t_pam_conv_script script; 138 struct pam_conv pamc; 139 struct t_file *tf; 140 pam_handle_t *pamh; 141 unsigned int i, j, n; 142 int pam_err; 143 144 memset(&script, 0, sizeof script); 145 pamc.conv = &t_pam_conv; 146 pamc.appdata_ptr = &script; 147 n = sizeof t_pam_return_cases / sizeof t_pam_return_cases[0]; 148 for (i = 0; i < n; ++i) { 149 tc = &t_pam_return_cases[i]; 150 tf = t_fopen(NULL); 151 for (j = 0; j < 2; ++j) { 152 t_fprintf(tf, "%s %s %s error=%s\n", 153 pam_facility_name[tc->facility], 154 pam_control_flag_name[tc->mod[j].ctlflag], 155 pam_return_so, 156 pam_err_name[tc->mod[j].modret]); 157 } 158 pam_err = pam_start(tf->name, "test", &pamc, &pamh); 159 t_verbose("pam_start() returned %d\n", pam_err); 160 if (pam_err != PAM_SUCCESS) 161 continue; 162 switch (tc->primitive) { 163 case PAM_SM_AUTHENTICATE: 164 pam_err = pam_authenticate(pamh, tc->flags); 165 break; 166 case PAM_SM_SETCRED: 167 pam_err = pam_setcred(pamh, tc->flags); 168 break; 169 case PAM_SM_ACCT_MGMT: 170 pam_err = pam_acct_mgmt(pamh, tc->flags); 171 break; 172 case PAM_SM_OPEN_SESSION: 173 pam_err = pam_open_session(pamh, tc->flags); 174 break; 175 case PAM_SM_CLOSE_SESSION: 176 pam_err = pam_close_session(pamh, tc->flags); 177 break; 178 case PAM_SM_CHAUTHTOK: 179 pam_err = pam_chauthtok(pamh, tc->flags); 180 break; 181 } 182 t_verbose("%s returned %d\n", 183 pam_func_name[tc->primitive], pam_err); 184 t_fclose(tf); 185 } 186 return (1); 187 } 188 92 189 93 190 … … 97 194 98 195 static struct t_test *t_plan[] = { 196 T(null), 99 197 T(empty_policy), 198 T(mod_return), 100 199 101 200 NULL … … 105 204 t_prepare(int argc, char *argv[]) 106 205 { 206 207 if ((pam_return_so = getenv("PAM_RETURN_SO")) == NULL) 208 return (NULL); 107 209 108 210 openpam_set_feature(OPENPAM_RESTRICT_MODULE_NAME, 0);
Note: See TracChangeset
for help on using the changeset viewer.