ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Intel ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΡΠ΅Π»ΠΈΠ· Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ° ControlFlag 1.0, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π² ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΌΠ°ΡΠΈΠ½Π½ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΡΡΠ΅Π½Π° Π½Π° Π³ΠΎΠ»ΡΠΌ ΠΎΠ±Π΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΊΠΎΠ΄. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ, ControlFlag Π½Π΅ ΠΏΡΠΈΠ»Π°Π³Π° Π³ΠΎΡΠΎΠ²ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°, Π² ΠΊΠΎΠΈΡΠΎ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ΡΡ Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ Π²Π°ΡΠΈΠ°ΡΠΈΠΈ, Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΈ Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎΠ±ΡΠΎΠΉΠ½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° ControlFlag Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C++ ΠΈ Π΅ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MIT.
Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΠΎΠ±ΡΡΠ°Π²Π° ΡΡΠ΅Π· ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠ΄Π΅Π» Π½Π° Π½Π°Π»ΠΈΡΠ½ΠΈΡ ΠΌΠ°ΡΠΈΠ² ΠΎΡ ΠΊΠΎΠ΄ Π½Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈ Π² GitHub ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ. Π Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠΈΠΏΠΈΡΠ½ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² ΠΊΠΎΠ΄Π° ΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½ΠΎ Π΄ΡΡΠ²ΠΎ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ²ΡΡΠ·ΠΊΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π·ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ, ΠΎΡΡΠ°Π·ΡΠ²Π°ΡΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°. Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΎ Π΄ΡΡΠ²ΠΎ Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°ΡΠΎ ΠΎΠΏΠΈΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²Π΅. ΠΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π°Ρ Ρ ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ½ΠΎΡΠΎ Π΄ΡΡΠ²ΠΎ Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ Ρ Π±Π»ΠΈΠ·ΠΊΠΈΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΠ²Π°Ρ Π·Π° Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° Π°Π½ΠΎΠΌΠ°Π»ΠΈΡ Π² ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½.

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