Ticket #36763

httpプロキシでユーザ認証が必要な場合、異常終了することがある

Date d'ouverture: 2016-10-31 20:26 Dernière mise à jour: 2016-12-06 21:46

Rapporteur:
(Anonyme)
Propriétaire:
(del#1144)
Type:
État:
Atteints
Composant:
Jalon:
(Aucun)
Priorité:
5 - moyen
Sévérité:
5 - moyen
Résolution:
Fixed
Fichier:
Aucun
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Détails

httpプロキシ経由で接続し、プロキシがユーザ認証を必要とする場合に、認証情報入力用の画面がでますが、その後しばらくして異常終了します(TeraTerm4.92)。

通信時のログを見ると、 TTProxy/ProxyWSockHook.h の1392行で出力している CONNECT のみ出力されており、後続の行は出力されていません。

send: "CONNECT host:port HTTP/1.0\r\n"

該当ソースの1407行目でパスワードを追加している際のエリアの長さがおかしいのではないでしょうか?

  1. strcpy_s(auth + userlen + 1, passlen, proxy.pass);

正しくは passlen + 1 であるべきだと思われます。

  1. // 修正後イメージ
  2. strcpy_s(auth + userlen + 1, passlen + 1, proxy.pass);

また、その後のbase64エンコードのロジックですが1418行のループを抜けた時点で bits が0でない場合にエンコード結果がおかしくなると思われます。

例えば、ユーザ名: user 、パスワード passwd であれば、base64エンコード結果は dXNlcjpwYXNzd2Q= であるべきだと思うのですが、現在は dXNlcjpwYXNzd2== になってしまうと思います。

以下のようにすべきかと思われます。

  1. /* make base64 string */
  2. while (*src != '\0') {
  3. data = (data << 8) | *src++;
  4. bits += 8;
  5. while (bits >= 6){
  6. bits -= 6;
  7. *dst++ = base64_table[0x3F & (data >> bits)];
  8. encodedlen--;
  9. }
  10. } // ←ここが1418行目
  11. // ここから追加
  12. if (bits > 0) {
  13. *dst++ = base64_table[0x3F & (data << (6 - bits))];
  14. encodedlen--;
  15. }
  16. // ここまで追加
  17. while (encodedlen-- > 0) {
  18. *dst++ = '=';
  19. }
  20. *dst = '\0';

お手数ですが、ご確認願います。

Ticket History (3/5 Histories)

2016-10-31 20:26 Updated by: None
  • New Ticket "httpプロキシでユーザ認証が必要な場合、異常終了することがある" created
2016-11-03 01:04 Updated by: (del#1144)
Commentaire

デバッグありがとうございます。r6525 r6526 にて修正をコミットしました。

2016-11-05 02:15 Updated by: (del#24082)
  • Propriétaire Update from (Aucun) to maya
2016-12-01 09:01 Updated by: None
2016-12-06 21:46 Updated by: (del#1144)
  • État Update from Ouvert to Atteints
  • Jalon Update from Tera Term 4.93 (atteints) to (Aucun)
  • Ticket Close date is changed to 2016-12-06 21:46

Attachment File List

No attachments

Modifier

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Connexion