Changeset 275 in openpam for trunk


Ignore:
Timestamp:
Dec 10, 2003, 5:42:25 PM (16 years ago)
Author:
Dag-Erling Smørgrav
Message:

I completely bungled the previous commit. Don't know what I was
thinking (or smoking) at the time. Really fix it this time.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/openpam_ttyconv.c

    r274 r275  
    3232 * SUCH DAMAGE.
    3333 *
    34  * $P4: //depot/projects/openpam/lib/openpam_ttyconv.c#23 $
     34 * $P4: //depot/projects/openpam/lib/openpam_ttyconv.c#24 $
    3535 */
    3636
     
    120120        /* trim trailing whitespace */
    121121        for (len = strlen(buf); len > 0; --len)
    122                 if (!isspace(buf[len - 1]))
     122                if (buf[len - 1] != '\r' && buf[len - 1] != '\n')
    123123                        break;
    124124        buf[len] = '\0';
     
    167167         void *data)
    168168{
     169        struct pam_response *aresp;
    169170        int i;
    170171
     
    173174        if (n <= 0 || n > PAM_MAX_NUM_MSG)
    174175                RETURNC(PAM_CONV_ERR);
    175         if ((*resp = calloc(n, sizeof **resp)) == NULL)
     176        if ((aresp = calloc(n, sizeof *aresp)) == NULL)
    176177                RETURNC(PAM_BUF_ERR);
    177178        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;
    180181                switch (msg[i]->msg_style) {
    181182                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)
    184185                                goto fail;
    185186                        break;
    186187                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)
    189190                                goto fail;
    190191                        break;
     
    205206                }
    206207        }
     208        *resp = aresp;
    207209        RETURNC(PAM_SUCCESS);
    208210 fail:
    209211        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);
    213215                }
    214216        }
    215         memset(*resp, 0, n * sizeof **resp);
    216         FREE(*resp);
     217        memset(aresp, 0, n * sizeof *aresp);
     218        FREE(aresp);
     219        *resp = NULL;
    217220        RETURNC(PAM_CONV_ERR);
    218221}
Note: See TracChangeset for help on using the changeset viewer.