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