Intel ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΠΏΡΡΠ²Π°ΡΠ° Π³ΠΎΠ»ΡΠΌΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° 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 ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π² ΡΡΠ»ΠΎΠ²Π½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ βifβ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΈΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ βΠ°ΠΊΠΎ (x = 7) y = x;β Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ, ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ βifβ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡΠ° βΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° == ΡΠΈΡΠ»ΠΎβ Π·Π° ΡΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΡΠ»ΠΎΠ²ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ βΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° = ΡΠΈΡΠ»ΠΎβ Π² ΠΈΠ·ΡΠ°Π·Π° βifβ Π΄Π° Π΅ ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΎ ΠΎΡ ΠΏΠ΅ΡΠ°ΡΠ½Π° Π³ΡΠ΅ΡΠΊΠ°. ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΡΡ Π²ΠΊΠ»ΡΡΠ²Π° ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π° Π΅Π·ΠΈΠΊ C Π² GitHub ΠΈ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π°. ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ΅ ΠΈ Π³ΠΎΡΠΎΠ²ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΠ΄Π°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru