Ignore:
Timestamp:
Jan 9, 2017, 11:09:38 AM (2 years ago)
Author:
jrpelegrina
Message:

Update new version: 3.15.02

File:
1 edited

Legend:

Unmodified
Added
Removed
  • filezilla/trunk/fuentes/src/putty/import.c

    r130 r3185  
    196196
    197197    if (*p & 0x80) {
     198        unsigned len;
    198199        int n = *p & 0x7F;
    199200        p++, sourcelen--;
    200201        if (sourcelen < n)
    201202            return -1;
    202         *length = 0;
     203        len = 0;
    203204        while (n--)
    204             *length = (*length << 8) | (*p++);
     205            len = (len << 8) | (*p++);
    205206        sourcelen -= n;
     207        *length = toint(len);
    206208    } else {
    207209        *length = *p;
     
    384386    }
    385387    strip_crlf(line);
    386     if (0 != strncmp(line, "-----BEGIN ", 11) ||
    387         0 != strcmp(line+strlen(line)-16, "PRIVATE KEY-----")) {
     388    if (!strstartswith(line, "-----BEGIN ") ||
     389        !strendswith(line, "PRIVATE KEY-----")) {
    388390        errmsg = "file does not begin with OpenSSH key header";
    389391        goto error;
     
    422424        }
    423425        strip_crlf(line);
    424         if (0 == strncmp(line, "-----END ", 9) &&
    425             0 == strcmp(line+strlen(line)-16, "PRIVATE KEY-----")) {
     426        if (strstartswith(line, "-----END ") &&
     427            strendswith(line, "PRIVATE KEY-----")) {
    426428            sfree(line);
    427429            line = NULL;
     
    658660    ret = ber_read_id_len(p, key->keyblob_len, &id, &len, &flags);
    659661    p += ret;
    660     if (ret < 0 || id != 16) {
     662    if (ret < 0 || id != 16 || len < 0 ||
     663        key->keyblob+key->keyblob_len-p < len) {
    661664        errmsg = "ASN.1 decoding failure";
    662665        retval = key->encrypted ? SSH2_WRONG_PASSPHRASE : NULL;
     
    684687                              &id, &len, &flags);
    685688        p += ret;
    686         if (ret < 0 || id != 2 || key->keyblob+key->keyblob_len-p < len ||
    687             len != 1 || p[0] != 1) {
     689        if (ret < 0 || id != 2 || len != 1 ||
     690            key->keyblob+key->keyblob_len-p < len || p[0] != 1) {
    688691            errmsg = "ASN.1 decoding failure";
    689692            retval = key->encrypted ? SSH2_WRONG_PASSPHRASE : NULL;
     
    695698                              &id, &len, &flags);
    696699        p += ret;
    697         if (ret < 0 || id != 4 || key->keyblob+key->keyblob_len-p < len) {
     700        if (ret < 0 || id != 4 || len < 0 ||
     701            key->keyblob+key->keyblob_len-p < len) {
    698702            errmsg = "ASN.1 decoding failure";
    699703            retval = key->encrypted ? SSH2_WRONG_PASSPHRASE : NULL;
     
    707711                              &id, &len, &flags);
    708712        p += ret;
    709         if (ret < 0 || id != 0 || key->keyblob+key->keyblob_len-p < len) {
     713        if (ret < 0 || id != 0 || len < 0 ||
     714            key->keyblob+key->keyblob_len-p < len) {
    710715            errmsg = "ASN.1 decoding failure";
    711716            retval = key->encrypted ? SSH2_WRONG_PASSPHRASE : NULL;
     
    715720                              &id, &len, &flags);
    716721        p += ret;
    717         if (ret < 0 || id != 6 || key->keyblob+key->keyblob_len-p < len) {
     722        if (ret < 0 || id != 6 || len < 0 ||
     723            key->keyblob+key->keyblob_len-p < len) {
    718724            errmsg = "ASN.1 decoding failure";
    719725            retval = key->encrypted ? SSH2_WRONG_PASSPHRASE : NULL;
     
    731737                              &id, &len, &flags);
    732738        p += ret;
    733         if (ret < 0 || id != 1 || key->keyblob+key->keyblob_len-p < len) {
     739        if (ret < 0 || id != 1 || len < 0 ||
     740            key->keyblob+key->keyblob_len-p < len) {
    734741            errmsg = "ASN.1 decoding failure";
    735742            retval = key->encrypted ? SSH2_WRONG_PASSPHRASE : NULL;
     
    739746                              &id, &len, &flags);
    740747        p += ret;
    741         if (ret < 0 || id != 3 || key->keyblob+key->keyblob_len-p < len ||
     748        if (ret < 0 || id != 3 || len < 0 ||
     749            key->keyblob+key->keyblob_len-p < len ||
    742750            len != ((((curve->fieldBits + 7) / 8) * 2) + 2)) {
    743751            errmsg = "ASN.1 decoding failure";
     
    814822                                  &id, &len, &flags);
    815823            p += ret;
    816             if (ret < 0 || id != 2 ||
     824            if (ret < 0 || id != 2 || len < 0 ||
    817825                key->keyblob+key->keyblob_len-p < len) {
    818826                errmsg = "ASN.1 decoding failure";
Note: See TracChangeset for help on using the changeset viewer.