Hvers vegna C-struct getur framleitt slæma SOCKS-beiðni
Skoðaðu skýrar sviðsbreiddir, bætaröð og streymis-I/O í stað þess að líta á útlit þýðandans sem kapalformatið.
Gilt proxy-vistfang gerir ekki handskrifuð SOCKS-skilaboð gild. Að senda C- eða C++-struct getur sent fyllingu eða heiltölur í hýsilröð sem samskiptareglurnar báðu aldrei um.
Fyrir SOCKS5 CONNECT-beiðni með lénsheiti skaltu raða þessari röð skýrt eftir aðferðarsamningum og hvaða auðkenningu sem valin er:
- Útgáfa, skipun, frátekið bæti og vistfangstegund
- Lénslengd og lénsbæti
- Tveggja bæta áfangagátt í netbætaröð
Lengd vistfanga fer eftir SOCKS-útgáfu og vistfangstegund. Tölusvið með fastri breidd þurfa tilgreinda framsetningu sína; lénsstrengir hafa sína eigin lengdarkóðun. C-strengjarendir er ekki almenn leiðbeining um að bæta núlli við kapalskilaboðin.
| Styttri leið í útfærslu | Vandamál til að athuga |
|---|---|
| Að úthluta 32-bita gildi í gegnum 8-bita bendi | Það gefur ekki frá sér öll fjögur bætin |
| Að kasta biðminni í bendi á stærri heiltölu | Jöfnun og bætaröð þarf enn að meðhöndla |
| Að gera ráð fyrir að ein lestur eða skrif sé ein skilaboð | TCP getur aðeins flutt hluta af röð samskiptareglnanna |
Berðu hvert svið saman við fyrirhugaðan áfangastað og meðhöndlaðu hluta-I/O. Að taka á móti tveimur bætum sannar ekki að allt svarið hafi borist. Að skoða þessi mörk getur greint rangt sniðna beiðni frá þjóni sem hafnar rétt lýstri tengingu.