Nima uchun C strukturasi noto'g'ri SOCKS so'rovi hosil qilishi mumkin
Kompilyator joylashuvini tarmoq formati deb hisoblash o'rniga aniq maydon kengliklari, bayt tartibi va oqim I/O ni tekshiring.
To'g'ri proksi manzili qo'lda yozilgan SOCKS xabarini to'g'ri qilmaydi. C yoki C++ strukturasi yuborilganda protokol hech qachon talab qilmagan to'ldirish yoki host tartibidagi butun sonlar yuborilishi mumkin.
Domen nomli SOCKS5 CONNECT so'rovi uchun usul muzokaralari va tanlangan har qanday autentifikatsiyadan so'ng bu ketma-ketlikni aniq seriyalashtiring:
- Versiya, buyruq, zaxiralangan bayt va manzil turi
- Domen uzunligi va domen baytlari
- Tarmoq bayt tartibida ikki baytli manzil porti
Manzil uzunliklari SOCKS versiyasi va manzil turiga bog'liq. Qat'iy kenglikdagi raqamli maydonlar o'zlarining belgilangan tasvirini talab qiladi; domen satrlarining o'z uzunlik kodlashi bor. C satr tugatuvchisi tarmoq xabariga nol qo'shish bo'yicha umumiy ko'rsatma emas.
| Amalga oshirishdagi qisqa yo'l | Tekshirilishi kerak bo'lgan muammo |
|---|---|
| 8 bitli ko'rsatkich orqali 32 bitli qiymat belgilash | U barcha to'rt baytni chiqarmaydi |
| Buferni kattaroq butun son ko'rsatkichiga aylantirish | Tekislash va bayt tartibini hali ham boshqarish kerak |
| Bitta o'qish yoki yozish bitta xabar deb hisoblash | TCP protokol ketma-ketligining faqat bir qismini uzatishi mumkin |
Har bir maydonni mo'ljallangan manzil bilan solishtiring va qismli I/O ni boshqaring. Ikki bayt olish butun javob kelganini isbotlamaydi. Shu chegaralarni tekshirish buzilgan so'rovni to'g'ri tavsiflangan ulanishni rad etuvchi serverdan ajratishga yordam beradi.