ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Checkpoint ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π·Π° Π·Π°ΡΠΈΡΠ° Safe-Linking, ΠΊΠΎΠΉΡΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡΠΈ, ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈΡΠ΅ ΠΊΡΠΌ Π±ΡΡΠ΅ΡΠΈ, Π·Π°Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° malloc. Safe-Linking Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠ°ΡΠΈΡ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, Π½ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠΎΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΎΡΠ²Π΅Π½ Π΅ΠΊΡΠΏΠ»ΠΎΠ°ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠ° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ΅ΡΠΈ ΠΎΡΠ΅ Π΅Π΄Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ, ΠΊΠΎΡΡΠΎ Π΄Π° ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ° ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΡΠΏΡΠΈΠ½Π°ΡΠ° (heap) Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
ΠΠ°ΡΡΠΎΠ²Π΅ΡΠ΅ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Safe-Linking ΡΠ° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈ Π·Π° Glibc (ptmalloc), uClibc-NG (dlmalloc), gperftools (tcmalloc) ΠΈ Google TCMalloc, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π·Π° ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π·Π°ΡΠΈΡΠ°ΡΠ° Π² Chromium (Π²
Chromium ΠΎΡ 2012 Π³ΠΎΠ΄ΠΈΠ½Π° Π΅ Π²Π³ΡΠ°Π΄Π΅Π½Π° ΡΠ΅Ρ
Π½ΠΈΠΊΠ° Π·Π° Π·Π°ΡΠΈΡΠ° MaskPtr, Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡ Checkpoint Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ).
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΏΠ°ΡΡΠΈ Π²Π΅ΡΠ΅ ΡΠ° ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈ Π·Π° ΠΏΡΡΠΊΠ°Π½Π΅ Π² Π°Π²Π³ΡΡΡΠΎΠ²ΡΠΊΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° Safe-Linking ΡΠ΅ Π±ΡΠ΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. Π uClibc-NG ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Safe-Linking Π²Π»ΠΈΠ·Π° Π² ΡΡΡΡΠ°Π²Π° Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ 1.0.33 ΠΈ Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. Π gperftools (ΡΡΠ°ΡΠΈΡΡ tcmalloc) ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ° , Π½ΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π² Π΅Π΄Π½ΠΎ ΠΎΡ Π±ΡΠ΄Π΅ΡΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ°ΡΠΎ ΠΎΠΏΡΠΈΡ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ (Π½ΠΎΠ²ΠΈΡΡ tcmalloc) ΠΎΡΠΊΠ°Π·Π°Ρ
Π° Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ°Ρ , ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π°ΠΉΠΊΠΈ ΡΠ΅ Π½Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ Π·Π° ΡΠ΅Π΄ΠΎΠ²Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΎΠ²Π°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ. Π’Π΅ΡΡΠΎΠ²Π΅ΡΠ΅, ΠΎΠ±Π°ΡΠ΅, ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½ΠΈ ΠΎΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈΡΠ΅ Π½Π° Checkpoint, ΠΏΠΎΠΊΠ°Π·Π°Ρ
Π°, ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΡΡ Safe-Linking Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·Ρ
ΠΎΠ΄ΠΈ Π·Π° ΠΏΠ°ΠΌΠ΅Ρ, Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΊΡΠΏΡΠΈΠ½Π°ΡΠ° ΡΡΠ΅Π΄Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΡΠ°ΠΌΠΎ Ρ 0.02%, Π° ΠΏΡΠΈ Π½Π°ΠΉ-Π»ΠΎΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ - Ρ 1.5% (Π·Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, ΡΠ°Π·Ρ
ΠΎΠ΄ΠΈΡΠ΅ ΠΏΡΠΈ ΠΏΡΠΈΠ»Π°Π³Π°Π½ΠΈΡ Π² Chromium ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π°Ρ Π½Π° βΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 2%β). ΠΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ
Π½Π° Safe-Linking Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° 2-3 Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠΈ Π²ΡΠ΅ΠΊΠΈ Π²ΠΈΠΊ Π½Π° free() ΠΈ 3-4 ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° malloc(). ΠΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ.
Safe-Linking ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΊΡΠΏΠΎΠ²Π΅ (heap), Π½ΠΎ ΠΈ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΡΠ΅Π»ΠΎΡΡΡΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΡΡΡΠΊΡΡΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΠΏΠΈΡΡΡΠΈ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π΄ΠΎ ΡΠ°ΠΌΠΈΡΠ΅ Π±ΡΡΠ΅ΡΠΈ. ΠΠ΅ΡΠΎΠ΄ΡΡ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠ°ΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΌΠ°ΠΊΡΠΎΡ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ Π±Π»ΠΎΠΊ Π² ΠΊΠΎΠ΄Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° Glibc Π²ΡΠΈΡΠΊΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅Π΄Π° Π² ΠΊΠΎΠ΄Π°). ΠΠ΅ΡΠΎΠ΄ΡΡ ΡΠ΅ ΡΠ²Π΅ΠΆΠ΄Π° Π΄ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
+#define PROTECT_PTR(pos, ptr) \
+ ((__typeof (ptr)) ((((size_t) pos) >> 12) ^ ((size_t) ptr)))
+#define REVEAL_PTR(ptr) PROTECT_PTR (&ptr, ptr)
β nextp = p->fd;
+ nextp = REVEAL_PTR (p->fd);
β¦
Π‘ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ ASLR (mmap_base) Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΠΏΠΈΡΡΡΠΈ, ΠΊΠ°ΡΠΎ Fast-Bins ΠΈ TCache. ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈ ΠΊΡΠΌ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΊΡΠΌ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠΏΠΈΡΡΠΊΠ°, ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ ΠΏΠΎ ΠΌΠ°ΡΠΊΠ° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠΎΠ΄ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ΡΠΎ ΠΏΠΎ Π³ΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡ ΡΠ΅ Π·Π°ΠΌΠ΅Π½Ρ ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° "(L >> PAGE_SHIFT) XOR (P)", ΠΊΡΠ΄Π΅ΡΠΎ P Π΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π° L Π΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° ΡΠΎΠ·ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π».
ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° (Address Space Layout Randomization) ΡΠ°ΡΡ ΠΎΡ Π±ΠΈΡΠΎΠ²Π΅ΡΠ΅ L Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ Π°Π΄ΡΠ΅Ρ Π½Π° ΠΊΡΠΏΠ° ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠ°ΡΠΎ ΠΊΠ»ΡΡ Π·Π° ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅ Π½Π° P (ΠΈΠ·Π²Π»ΠΈΡΠ°Ρ ΡΠ΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Ρ 12 Π±ΠΈΡΠ° Π·Π° 4096-Π±Π°ΠΉΡΠΎΠ²ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ). ΠΠΎΠ΄ΠΎΠ±Π½Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΡΠΈΡΠΊΠ° ΠΎΡ Π·Π°Ρ Π²Π°ΡΠ°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡ Π½Π΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΡΠΈ ΡΠΎΡΠΌΠ° ΠΈ Π·Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π·Π°ΠΌΡΠ½Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ Π·Π½Π°ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ Π·Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΡΠΏΠ°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π² ΠΊΠΎΠ΄Π° Π½Π° ΠΏΠ°ΡΡΠ° ΡΡΡΠΎ ΠΏΡΠΈΡΡΡΡΠ²Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° ΠΏΠΎΠ΄ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΠ°, ΠΊΠΎΡΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ Π½Π΅Π²ΡΡΠ½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π·Π½Π°Π½ΠΈΠ΅ Π·Π° Π±ΡΠΎΡ Π½Π° Π±ΠΈΡΠΎΠ²Π΅ΡΠ΅, Π½Π° ΠΊΠΎΠΈΡΠΎ Π΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½ΠΎ ΠΏΠΎΠ΄ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½Π° 64-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π±Π»ΠΎΠΊΠΈΡΠ°Π½ΠΈ 15 ΠΎΡ 16 ΠΎΠΏΠΈΡΠΈ Π·Π° Π°ΡΠ°ΠΊΠ°, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΎΡΡΠΈΡΠ°Ρ ΠΏΠΎΠ΄ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ΡΠΎ.
ΠΠ΅ΡΠΎΠ΄ΡΡ Π΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π·Π° Π·Π°ΡΠΈΡΠ° ΠΎΡ Π°ΡΠ°ΠΊΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ (ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΌΠ»Π°Π΄ΠΈΡΠ΅ Π±Π°ΠΉΡΠΎΠ²Π΅), ΠΏΡΠ»Π½ΠΎ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ (ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ ΠΊΡΠΌ ΠΊΠΎΠ΄ Π½Π° Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡ) ΠΈ ΡΠΌΡΠ½Π° Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ° Π½Π° ΡΠΏΠΈΡΡΠΊΠ° ΠΏΠΎ Π½Π΅Π²ΡΡΠ½Π° Π°Π΄ΡΠ΅ΡΠ°. ΠΠ°ΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Safe-Linking Π² malloc Π±ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π±Π»ΠΎΠΊΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΅ΠΊΡΠΏΠ»ΠΎΠΈΡΠ°ΡΠΈΡ Π½Π° Π½Π°ΡΠΊΠΎΡΠΎ ΠΎΡ ΡΡΡΠΈΡΠ΅ ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½ΠΎΡΠΎ ΠΎΡΠ²Π΅ΡΠ»Π΅Π½ΠΈΠ΅ Philips Hue Bridge, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΎ ΠΎΡ ΠΏΡΠ΅ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅Ρ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π°Π΄ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
