20150221
    security problem: it can not parse username which contains
    -- (double dash sign) properly.
    impact: infinite loop. dos attacks can consume cpu time.
    fix: changed the loop condition.
    Thanks, Hiroya Ito.
20070605
    portability problem: unsigned short int is not guaranteed to be an
    16-bit integer. And unsigned long int is not guaranteed to be
    an 32-bit integer.
    impact: couldn't compile.
    fix: included inttypes.h and used uint16_t and uint32_t.
    Thanks, Wayne Marshall.
20040303
    portability problem: errno is not guaranteed to be an int.
    impact: couldn't compile.
    fix: changed "extern int errno;" to "#include <errno.h>".
