Changeset 483 in openpam for trunk


Ignore:
Timestamp:
Nov 3, 2011, 4:46:20 PM (7 years ago)
Author:
Dag-Erling Smørgrav
Message:

Fix a couple of bugs in the option string reassembly code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/openpam_configure.c

    r482 r483  
    295295        unsigned char q = 0;
    296296        char *option;
     297        size_t size;
    297298
    298299        errno = 0;
     
    325326                vb = ve = ne;
    326327        }
    327         if ((option = malloc((ne - nb) + 1 + (ve - vb) + 1)) == NULL)
     328        size = (ne - nb) + 1;
     329        if (ve > vb)
     330                size += (ve - vb) + 1;
     331        if ((option = malloc(size)) == NULL)
    328332                return (NULL);
    329333        strncpy(option, nb, ne - nb);
    330         option[ne - nb] = '=';
    331         strncpy(option + (ne - nb), vb, ve - vb);
    332         option[(ne - nb) + 1 + (ve - vb) + 1] = '\0';
     334        if (ve > vb) {
     335                option[ne - nb] = '=';
     336                strncpy(option + (ne - nb) + 1, vb, ve - vb);
     337        }
     338        option[size - 1] = '\0';
     339        fprintf(stderr, "%s\n", option);
    333340        *line = q ? ve + 1 : ve;
    334341        return (option);
Note: See TracChangeset for help on using the changeset viewer.