Changeset 17 in openpam
- Timestamp:
- Feb 2, 2002, 5:47:36 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/pam_set_item.c
r16 r17 56 56 const void *item) 57 57 { 58 void *tmp; 58 void **slot, *tmp; 59 size_t size; 59 60 60 61 if (pamh == NULL) 61 62 return (PAM_SYSTEM_ERR); 62 63 64 slot = &pamh->item[item_type]; 63 65 switch (item_type) { 64 66 case PAM_SERVICE: … … 71 73 case PAM_USER_PROMPT: 72 74 case PAM_AUTHTOK_PROMPT: 73 if (item == NULL) { 74 tmp = NULL; 75 break; 76 } 77 if ((tmp = strdup(item)) == NULL) 78 return (PAM_BUF_ERR); 75 size = strlen(*slot) + 1; 76 if (item != NULL) 77 tmp = strdup(item); 79 78 break; 80 79 case PAM_CONV: 81 if (item == NULL) { 82 tmp = NULL; 83 break; 84 } 85 if ((tmp = malloc(sizeof(struct pam_conv))) == NULL) 86 return (PAM_BUF_ERR); 87 memcpy(tmp, item, sizeof(struct pam_conv)); 80 size = sizeof(struct pam_conv); 81 if (item != NULL) 82 tmp = malloc(size); 88 83 break; 89 84 default: 90 85 return (PAM_SYSTEM_ERR); 91 86 } 92 free(pamh->item[item_type]); 93 pamh->item[item_type] = tmp; 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 94 return (PAM_SUCCESS); 95 95 }
Note: See TracChangeset
for help on using the changeset viewer.