pam_set_item.c (91094) | pam_set_item.c (91097) |
---|---|
1/*- 2 * Copyright (c) 2002 Networks Associates Technologies, Inc. 3 * All rights reserved. 4 * 5 * This software was developed for the FreeBSD Project by ThinkSec AS and 6 * NAI Labs, the Security Research Division of Network Associates, Inc. 7 * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the 8 * DARPA CHATS research program. --- 48 unchanged lines hidden (view full) --- 57{ 58 void **slot, *tmp; 59 size_t size; 60 61 if (pamh == NULL) 62 return (PAM_SYSTEM_ERR); 63 64 slot = &pamh->item[item_type]; | 1/*- 2 * Copyright (c) 2002 Networks Associates Technologies, Inc. 3 * All rights reserved. 4 * 5 * This software was developed for the FreeBSD Project by ThinkSec AS and 6 * NAI Labs, the Security Research Division of Network Associates, Inc. 7 * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the 8 * DARPA CHATS research program. --- 48 unchanged lines hidden (view full) --- 57{ 58 void **slot, *tmp; 59 size_t size; 60 61 if (pamh == NULL) 62 return (PAM_SYSTEM_ERR); 63 64 slot = &pamh->item[item_type]; |
65 tmp = NULL; |
|
65 switch (item_type) { 66 case PAM_SERVICE: 67 case PAM_USER: 68 case PAM_AUTHTOK: 69 case PAM_OLDAUTHTOK: 70 case PAM_TTY: 71 case PAM_RHOST: 72 case PAM_RUSER: 73 case PAM_USER_PROMPT: 74 case PAM_AUTHTOK_PROMPT: | 66 switch (item_type) { 67 case PAM_SERVICE: 68 case PAM_USER: 69 case PAM_AUTHTOK: 70 case PAM_OLDAUTHTOK: 71 case PAM_TTY: 72 case PAM_RHOST: 73 case PAM_RUSER: 74 case PAM_USER_PROMPT: 75 case PAM_AUTHTOK_PROMPT: |
75 size = strlen(*slot) + 1; | 76 if (*slot != NULL) 77 size = strlen(*slot) + 1; |
76 if (item != NULL) | 78 if (item != NULL) |
77 tmp = strdup(item); | 79 if ((tmp = strdup(item)) == NULL) 80 return (PAM_BUF_ERR); |
78 break; 79 case PAM_CONV: 80 size = sizeof(struct pam_conv); | 81 break; 82 case PAM_CONV: 83 size = sizeof(struct pam_conv); |
81 if (item != NULL) 82 tmp = malloc(size); | 84 if (item != NULL) { 85 if ((tmp = malloc(size)) == NULL) 86 return (PAM_BUF_ERR); 87 memcpy(tmp, item, sizeof(struct pam_conv)); 88 } |
83 break; 84 default: 85 return (PAM_SYSTEM_ERR); 86 } | 89 break; 90 default: 91 return (PAM_SYSTEM_ERR); 92 } |
87 if (item != NULL && tmp == NULL) 88 return (PAM_BUF_ERR); | |
89 if (*slot != NULL) { 90 memset(*slot, 0xd0, size); 91 free(*slot); 92 } 93 *slot = tmp; 94 return (PAM_SUCCESS); 95} | 93 if (*slot != NULL) { 94 memset(*slot, 0xd0, size); 95 free(*slot); 96 } 97 *slot = tmp; 98 return (PAM_SUCCESS); 99} |