- Timestamp:
- Dec 10, 2003, 5:42:25 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/openpam_ttyconv.c
r274 r275 32 32 * SUCH DAMAGE. 33 33 * 34 * $P4: //depot/projects/openpam/lib/openpam_ttyconv.c#2 3$34 * $P4: //depot/projects/openpam/lib/openpam_ttyconv.c#24 $ 35 35 */ 36 36 … … 120 120 /* trim trailing whitespace */ 121 121 for (len = strlen(buf); len > 0; --len) 122 if ( !isspace(buf[len - 1]))122 if (buf[len - 1] != '\r' && buf[len - 1] != '\n') 123 123 break; 124 124 buf[len] = '\0'; … … 167 167 void *data) 168 168 { 169 struct pam_response *aresp; 169 170 int i; 170 171 … … 173 174 if (n <= 0 || n > PAM_MAX_NUM_MSG) 174 175 RETURNC(PAM_CONV_ERR); 175 if (( *resp = calloc(n, sizeof **resp)) == NULL)176 if ((aresp = calloc(n, sizeof *aresp)) == NULL) 176 177 RETURNC(PAM_BUF_ERR); 177 178 for (i = 0; i < n; ++i) { 178 resp[i]->resp_retcode = 0;179 resp[i]->resp = NULL;179 aresp[i].resp_retcode = 0; 180 aresp[i].resp = NULL; 180 181 switch (msg[i]->msg_style) { 181 182 case PAM_PROMPT_ECHO_OFF: 182 (*resp[i]).resp = prompt_echo_off(msg[i]->msg);183 if ( (*resp[i]).resp == NULL)183 aresp[i].resp = prompt_echo_off(msg[i]->msg); 184 if (aresp[i].resp == NULL) 184 185 goto fail; 185 186 break; 186 187 case PAM_PROMPT_ECHO_ON: 187 (*resp[i]).resp = prompt(msg[i]->msg);188 if ( (*resp[i]).resp == NULL)188 aresp[i].resp = prompt(msg[i]->msg); 189 if (aresp[i].resp == NULL) 189 190 goto fail; 190 191 break; … … 205 206 } 206 207 } 208 *resp = aresp; 207 209 RETURNC(PAM_SUCCESS); 208 210 fail: 209 211 for (i = 0; i < n; ++i) { 210 if ( (*resp[i]).resp != NULL) {211 memset( (*resp[i]).resp, 0, strlen((*resp[i]).resp));212 FREE( (*resp[i]).resp);212 if (aresp[i].resp != NULL) { 213 memset(aresp[i].resp, 0, strlen(aresp[i].resp)); 214 FREE(aresp[i].resp); 213 215 } 214 216 } 215 memset(*resp, 0, n * sizeof **resp); 216 FREE(*resp); 217 memset(aresp, 0, n * sizeof *aresp); 218 FREE(aresp); 219 *resp = NULL; 217 220 RETURNC(PAM_CONV_ERR); 218 221 }
Note: See TracChangeset
for help on using the changeset viewer.