Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/ssh_chacha20poly1305/ttssh2/ttxssh/ttxssh.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3189 by doda, Tue Dec 16 05:50:45 2008 UTC revision 3190 by doda, Tue Dec 16 08:58:26 2008 UTC
# Line 1447  static void replace_to_blank(char *src, Line 1447  static void replace_to_blank(char *src,
1447          *dst = '\0';          *dst = '\0';
1448  }  }
1449    
1450    // Percent-encodeされた文字列srcをデコードしてdstにコピーする。
1451    // dstlenはdstのサイズ。これより結果が長い場合、その分は切り捨てられる。
1452    static void percent_decode(char *dst, int dstlen, char *src) {
1453            if (src == NULL || dst == NULL || dstlen < 1) {
1454                    return;
1455            }
1456    
1457            while (*src != 0 && dstlen > 1) {
1458                    if (*src == '%' && isxdigit(*(src+1)) && isxdigit(*(src+2))) {
1459                            src++; *dst  = (isalpha(*src) ? (*src|0x20) - 'a' + 10 : *src - '0') << 4;
1460                            src++; *dst |= (isalpha(*src) ? (*src|0x20) - 'a' + 10 : *src - '0');
1461                            src++; dst++;
1462                    }
1463                    else {
1464                            *dst++ = *src++;
1465                    }
1466                    dstlen--;
1467            }
1468            *dst = 0;
1469            return;
1470    }
1471    
1472  /* returns 1 if the option text must be deleted */  /* returns 1 if the option text must be deleted */
1473  static int parse_option(PTInstVar pvar, char FAR * option)  static int parse_option(PTInstVar pvar, char FAR * option)
1474  {  {
# Line 1647  static int parse_option(PTInstVar pvar, Line 1669  static int parse_option(PTInstVar pvar,
1669                          // ':'以降はパスワード                          // ':'以降はパスワード
1670                          if ((p3 = strchr(p, ':')) != NULL) {                          if ((p3 = strchr(p, ':')) != NULL) {
1671                                  *p3 = 0;                                  *p3 = 0;
1672                                  strcpy_s(pvar->ssh2_password, sizeof(pvar->ssh2_password), p3 + 1);                                  percent_decode(pvar->ssh2_password, sizeof(pvar->ssh2_password), p3 + 1);
1673                                  pvar->ssh2_autologin = 1;                                  pvar->ssh2_autologin = 1;
1674                          }                          }
1675                          strcpy_s(pvar->ssh2_username, sizeof(pvar->ssh2_username), p);                          percent_decode(pvar->ssh2_username, sizeof(pvar->ssh2_username), p);
1676                          // p が host part の先頭('@'の次の文字)を差すようにする                          // p が host part の先頭('@'の次の文字)を差すようにする
1677                          p = p2 + 1;                          p = p2 + 1;
1678                  }                  }

Legend:
Removed from v.3189  
changed lines
  Added in v.3190

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26