diff options
author | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2020-06-28 17:52:14 +0000 |
---|---|---|
committer | giraffedata <giraffedata@9d0c8265-081b-0410-96cb-a4ca84ce46f8> | 2020-06-28 17:52:14 +0000 |
commit | 1cd3ef0dd6c2236d0b329879bacd9360d01c88a1 (patch) | |
tree | a60016b5dd48fbf681ebfb43a6ca0d7e20a391d8 /lib/libpam.c | |
parent | cbbf595776cee6b8d8a24becf49ee6468eeba712 (diff) | |
download | netpbm-mirror-1cd3ef0dd6c2236d0b329879bacd9360d01c88a1.tar.gz netpbm-mirror-1cd3ef0dd6c2236d0b329879bacd9360d01c88a1.tar.xz netpbm-mirror-1cd3ef0dd6c2236d0b329879bacd9360d01c88a1.zip |
Promote Development to Advaanced - Release 10.91
git-svn-id: http://svn.code.sf.net/p/netpbm/code/advanced@3877 9d0c8265-081b-0410-96cb-a4ca84ce46f8
Diffstat (limited to 'lib/libpam.c')
-rw-r--r-- | lib/libpam.c | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/lib/libpam.c b/lib/libpam.c index a8f140b3..d19534e2 100644 --- a/lib/libpam.c +++ b/lib/libpam.c @@ -420,40 +420,49 @@ pnm_setpamrow(const struct pam * const pamP, #define MAX_VALUE_LENGTH 255 static void -parseHeaderLine(const char buffer[], - char label[MAX_LABEL_LENGTH+1], - char value[MAX_VALUE_LENGTH+1]) { - - int buffer_curs; +parseHeaderLine(const char * const buffer, + char * const label, + char * const value) { +/*---------------------------------------------------------------------------- + We truncate the labe to MAX_LABEL_LENGTH and the value to + MAX_VALUE_LENGTH. There must be at least that much space (plus space + for a terminating NUL) at 'label' and 'value', respectively. +-----------------------------------------------------------------------------*/ + unsigned int bufferCurs; - buffer_curs = 0; /* Skip initial white space */ - while (ISSPACE(buffer[buffer_curs])) buffer_curs++; + for (bufferCurs = 0; ISSPACE(buffer[bufferCurs]); ++bufferCurs) {} { /* Read off label, put as much as will fit into label[] */ - int label_curs; - label_curs = 0; - while (!ISSPACE(buffer[buffer_curs]) && buffer[buffer_curs] != '\0') { - if (label_curs < MAX_LABEL_LENGTH) - label[label_curs++] = buffer[buffer_curs]; - buffer_curs++; + unsigned int labelCurs; + + for (labelCurs = 0; + !ISSPACE(buffer[bufferCurs]) && buffer[bufferCurs] != '\0'; + ++bufferCurs) { + if (labelCurs < MAX_LABEL_LENGTH) + label[labelCurs++] = buffer[bufferCurs]; } - label[label_curs] = '\0'; /* null terminate it */ + label[labelCurs] = '\0'; /* null terminate it */ } /* Skip white space between label and value */ - while (ISSPACE(buffer[buffer_curs])) buffer_curs++; + while (ISSPACE(buffer[bufferCurs])) + ++bufferCurs; - /* copy value into value[] */ - strncpy(value, buffer+buffer_curs, MAX_VALUE_LENGTH+1); + /* copy value into value[], truncating as necessary */ + strncpy(value, buffer+bufferCurs, MAX_VALUE_LENGTH); + value[MAX_VALUE_LENGTH] = '\0'; { /* Remove trailing white space from value[] */ - int value_curs; - value_curs = strlen(value)-1; - while (value_curs >= 0 && ISSPACE(value[value_curs])) - value[value_curs--] = '\0'; + unsigned int valueCurs; + + for (valueCurs = strlen(value); + valueCurs > 0 && ISSPACE(value[valueCurs-1]); + --valueCurs); + + value[valueCurs] = '\0'; } } |