ΠΠ½ΡΠ΅Π» Π³ΠΎ ΠΎΠ±ΡΠ°Π²ΠΈ ΠΏΡΠ²ΠΎΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π°Π»Π°ΡΠΊΠ°ΡΠ° ControlFlag 1.0, ΠΊΠΎΡΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π²ΠΎ ΠΈΠ·Π²ΠΎΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΎ ΡΡΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ΅Π½ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠ° ΠΊΠΎΠ»ΠΈΡΠΈΠ½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈ ΠΊΠΎΠ΄. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ, ControlFlag Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ²Π° Π³ΠΎΡΠΎΠ²ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°, Π²ΠΎ ΠΊΠΎΠΈ Π΅ ΡΠ΅ΡΠΊΠΎ Π΄Π° ΡΠ΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ½ΠΈ ΠΎΠΏΡΠΈΠΈ, ΡΡΠΊΡ ΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π° Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° ΡΠΏΠΎΡΡΠ΅Π±Π° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°Π·ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΠΎΠ΄ΠΎΡ ControlFlag Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ C++ ΠΈ Π΅ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° MIT.
Π‘ΠΈΡΡΠ΅ΠΌΠΎΡ Π΅ ΠΎΠ±ΡΡΠ΅Π½ ΡΠΎ Π³ΡΠ°Π΄Π΅ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΡΠΊΠΈ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΠΎΡΡΠΎΡΠ½Π°ΡΠ° Π½ΠΈΠ·Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π²Π΅Π½ΠΈ Π²ΠΎ GitHub ΠΈ ΡΠ»ΠΈΡΠ½ΠΈ ΡΠ°Π²Π½ΠΈ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ°. ΠΠΎ ΡΠ°Π·Π°ΡΠ° Π½Π° ΠΎΠ±ΡΠΊΠ°, ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π° ΡΠΈΠΏΠΈΡΠ½ΠΈ ΠΎΠ±ΡΠ°ΡΡΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠ°ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ ΠΈ Π³ΡΠ°Π΄ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΊΠΎ Π΄ΡΠ²ΠΎ Π½Π° Π²ΡΡΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΡ ΠΎΠ²ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΡΠΈ, ΠΊΠ°ΠΊΠΎ ΠΎΠ΄ΡΠ°Π· Π½Π° ΡΠ΅ΠΊΠΎΡ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°. ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΎ ΡΡΠ΅Π±Π»ΠΎ Π·Π° ΠΎΠ΄Π»ΡΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΅ Π³ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° ΠΈΡΠΊΡΡΡΠ²ΠΎΡΠΎ Π·Π° ΡΠ°Π·Π²ΠΎΡ Π½Π° ΡΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Π²ΠΎΡΠ½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ. ΠΠΎΠ΄ΠΎΡ ΡΡΠΎ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄ΡΠ²Π° Π΅ ΠΏΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ Π½Π° ΡΠ»ΠΈΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΠΎΠ±ΡΠ°ΡΡΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π°Ρ ΡΠΏΠΎΡΠ΅Π΄ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΎΡΠΎ ΡΡΠ΅Π±Π»ΠΎ Π½Π° ΠΎΠ΄Π»ΡΠΊΠΈ. ΠΠΎΠ»Π΅ΠΌΠΈΡΠ΅ Π½Π΅ΡΠΎΠ²ΠΏΠ°ΡΠ°ΡΠ° ΡΠΎ ΡΠΎΡΠ΅Π΄Π½ΠΈΡΠ΅ Π³ΡΠ°Π½ΠΊΠΈ ΡΠΊΠ°ΠΆΡΠ²Π°Π°Ρ Π½Π° ΠΏΡΠΈΡΡΡΡΠ²ΠΎ Π½Π° Π°Π½ΠΎΠΌΠ°Π»ΠΈΡΠ° Π²ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°.
ΠΠ°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ControlFlag, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈΡΠ΅ Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π° ΠΈΠ·Π²ΠΎΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ OpenSSL ΠΈ cURL:
- ΠΠ½ΠΎΠΌΠ°Π»Π½ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ β(s1 == NULL) β§ (s2 == NULL)β ΠΈ β(s1 == NULL) | (s2 == NULL)" , ΠΊΠΎΠΈ Π½Π΅ ΡΠ΅ ΡΠΎΠ²ΠΏΠ°ΡΠ°Π°Ρ ΡΠΎ Π½Π°ΡΡΠ΅ΡΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅Π½Π°ΡΠ° ΡΠ΅ΠΌΠ° "(s1 == NULL) || (s2 == NULL)β. ΠΠΎΠ΄ΠΎΡ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π²ΠΎ ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ β(-2 == rv)β (ΠΌΠΈΠ½ΡΡΠΎΡ Π±Π΅ΡΠ΅ ΠΏΠ΅ΡΠ°ΡΠ½Π° Π³ΡΠ΅ΡΠΊΠ°) ΠΈ βBIO_puts(bp, β:β) <= 0)β (Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠΏΠ΅ΡΠ½ΠΎΡΠΎ Π·Π°Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° ΡΡΠ΅Π±Π°ΡΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ β== 0β).
- ΠΠΎ cURL, Π±Π΅ΡΠ΅ ΠΎΡΠΊΡΠΈΠ΅Π½Π° Π³ΡΠ΅ΡΠΊΠ° ΡΡΠΎ Π½Π΅ Π±Π΅ΡΠ΅ ΠΎΡΠΊΡΠΈΠ΅Π½Π° ΠΎΠ΄ ΡΡΠ°ΡΠΈΡΠΊΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ ΠΏΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠ½ΠΈΠΎΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ βs->keeponβ, ΠΊΠΎΡ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΌΠ΅ΡΠΈΡΠΊΠΈ ΡΠΈΠΏ, Π½ΠΎ Π±Π΅ΡΠ΅ ΡΠΏΠΎΡΠ΅Π΄Π΅Π½ ΡΠΎ Π±ΡΠ»ΠΎΠ²Π°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ TRUE.
ΠΠ΅ΡΡ ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈΡΠ΅ Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° ControlFlag 1.0, ΠΈΠΌΠ° ΡΠ΅Π»ΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° ΡΠ°Π·ΠΈΠΊΠΎΡ C ΠΈ ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π²ΠΎ ΡΡΠ»ΠΎΠ²Π½ΠΈΡΠ΅ ΠΈΠ·ΡΠ°Π·ΠΈ βΠ°ΠΊΠΎβ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π° ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΡ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ βΠ°ΠΊΠΎ (x = 7) y = x;β Π‘ΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠ΅ ΡΡΠ²ΡΠ΄ΠΈ Π΄Π΅ΠΊΠ° ΠΈΡΠΊΠ°Π·ΠΎΡ βΠ°ΠΊΠΎβ ΠΎΠ±ΠΈΡΠ½ΠΎ ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠ°ΡΠ° βΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° == Π±ΡΠΎΡβ Π·Π° Π΄Π° Π³ΠΈ ΡΠΏΠΎΡΠ΅Π΄ΠΈ Π½ΡΠΌΠ΅ΡΠΈΡΠΊΠΈΡΠ΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ, ΡΠ°ΠΊΠ° ΡΡΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° Π΅ Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎΡΡΠ° βΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° = Π±ΡΠΎΡβ Π²ΠΎ ΠΈΠ·ΡΠ°Π·ΠΎΡ βΠ°ΠΊΠΎβ Π΄Π° Π΅ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΎΠ΄ ΠΏΠ΅ΡΠ°ΡΠ½Π° Π³ΡΠ΅ΡΠΊΠ°. ΠΠΎΠΌΠΏΠ»Π΅ΡΠΎΡ Π²ΠΊΠ»ΡΡΡΠ²Π° ΡΠΊΡΠΈΠΏΡΠ° ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° Π³ΠΈ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ° Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ C Π½Π° GitHub ΠΈ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ. ΠΠΎΡΡΠ°ΠΏΠ½ΠΈ ΡΠ΅ ΠΈ Π³ΠΎΡΠΎΠ²ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°Π°Ρ Π²Π΅Π΄Π½Π°Ρ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΡ.
ΠΠ·Π²ΠΎΡ: opennet.ru