Java میں byte علامت والا ہے۔ اسی لیے جس octet کی وائر ویلیو 217 ہے وہ byte array سے براہ راست چھاپنے پر منفی قدر کے طور پر نظر آ سکتا ہے۔ اس کا مطلب یہ نہیں کہ پراکسی نے کوئی غلط منفی IP پتہ بھیجا ہے۔

محفوظ قدر کو unsigned صحیح عدد میں بدلیں، مثلاً Byte.toUnsignedInt(value) سے، یا فیلڈ پڑھتے وقت DataInputStream.readUnsignedByte() استعمال کریں۔ نیٹ ورک ترتیب والے پورٹ کے لیے کسی بھی byte کو signed اعشاری عدد سمجھنے کے بجائے دستاویزی دو-byte قدر پڑھیں۔

نمائندگی کو فریمنگ سے الگ رکھیں۔ ساکٹ پڑھائی درخواست سے کم byte واپس کر سکتی ہے۔ پورا فیلڈ پڑھیں، پھر SOCKS ورژن اور پتے کی قسم کے مطابق تشریح کریں۔ SOCKS5 پتوں میں IPv4 پتہ، IPv6 پتہ یا لمبائی کے سابقے والا ڈومین نام ہو سکتا ہے؛ مقررہ چار-byte مفروضہ ان میں سے صرف ایک شکل کو محیط ہے۔

منفی دکھنے والے octet کی درستی ظاہری مسئلہ حل کرتی ہے۔ مگر یہ ایسے parser کو درست نہیں کرتی جو غلط آفسیٹ سے پڑھنا شروع کرے یا پتے کے بیچ میں رک جائے۔

متعلقہ مضامین