เจ‡เฉฐเจŸเฉˆเจฒ เจจเฉ‡ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฌเฉฑเจ— เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจ เจฒเจˆ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจซเจฒเฉˆเจ— เจฎเจธเจผเฉ€เจจ เจฒเจฐเจจเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ•เฉ‹เจก เจ–เฉ‹เจฒเฉเจนเจฟเจ† เจนเฉˆ

Intel เจจเฉ‡ ControlFlag เจ–เฉ‹เจœ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจตเจฟเจ•เจพเจธ เจฆเฉ€ เจ–เฉ‹เจœ เจ•เฉ€เจคเฉ€ เจนเฉˆ, เจœเจฟเจธเจฆเจพ เจ‰เจฆเฉ‡เจธเจผ เจ•เฉ‹เจก เจ—เฉเจฃเจตเฉฑเจคเจพ เจตเจฟเฉฑเจš เจธเฉเจงเจพเจฐ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฎเจธเจผเฉ€เจจ เจธเจฟเจ–เจฒเจพเจˆ เจชเฉเจฐเจฃเจพเจฒเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉˆเฅค เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉเจ†เจฐเจพ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ€ เจŸเฉ‚เจฒเจ•เจฟเฉฑเจŸ, เจฎเฉŒเจœเฉ‚เจฆเจพ เจ•เฉ‹เจก เจฆเฉ€ เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€ เจฎเจพเจคเจฐเจพ 'เจคเฉ‡ เจธเจฟเจ–เจฒเจพเจˆ เจชเฉเจฐเจพเจชเจค เจฎเจพเจกเจฒ เจฆเฉ‡ เจ…เจงเจพเจฐ 'เจคเฉ‡, เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจญเจพเจธเจผเจพเจตเจพเจ‚ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ C/C++ เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ‡ เจธเจฐเฉ‹เจค เจŸเฉˆเจ•เจธเจŸ เจตเจฟเฉฑเจš เจตเฉฑเจ–-เจตเฉฑเจ– เจคเจฐเฉเจŸเฉ€เจ†เจ‚ เจ…เจคเฉ‡ เจตเจฟเจ—เจพเฉœเจพเจ‚ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเฉ€ เจนเฉˆเฅค เจธเจฟเจธเจŸเจฎ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ•เจˆ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจ เจฒเจˆ เจขเฉเจ•เจตเจพเจ‚ เจนเฉˆ, เจŸเจพเจˆเจชเฉ‹เจœเจผ เจ…เจคเฉ‡ เจ—เจฒเจค เจ•เจฟเจธเจฎ เจฆเฉ‡ เจธเฉฐเจœเฉ‹เจ—เจพเจ‚ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฒเฉˆ เจ•เฉ‡, เจชเฉเจ†เจ‡เฉฐเจŸเจฐเจพเจ‚ เจ…เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจตเจฟเฉฑเจš เจ–เฉเฉฐเจเฉ€เจ†เจ‚ NULL เจœเจพเจ‚เจšเจพเจ‚ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‰เจฃ เจฒเจˆเฅค ControlFlag เจ•เฉ‹เจก C++ เจตเจฟเฉฑเจš เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจ…เจคเฉ‡ MIT เจฒเจพเจ‡เจธเฉฐเจธ เจฆเฉ‡ เจคเจนเจฟเจค เจ“เจชเจจ เจธเฉ‹เจฐเจธ เจนเฉˆเฅค

เจธเจฟเจธเจŸเจฎ GitHub เจ…เจคเฉ‡ เจธเจฎเจพเจจ เจœเจจเจคเจ• เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ“เจชเจจ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจฆเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจ•เฉ‹เจก เจเจฐเฉ‡ เจฆเจพ เจ‡เฉฑเจ• เจ…เฉฐเจ•เฉœเจพ เจฎเจพเจกเจฒ เจฌเจฃเจพ เจ•เฉ‡ เจธเจตเฉˆ-เจธเจฟเฉฑเจ–เจฟเจ† เจนเฉˆเฅค เจธเจฟเฉฑเจ–เจฃ เจฆเฉ‡ เจชเฉœเจพเจ… 'เจคเฉ‡, เจธเจฟเจธเจŸเจฎ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจขเจพเจ‚เจšเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ–เจพเจธ เจชเฉˆเจŸเจฐเจจ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจนเจจเจพเจ‚ เจชเฉˆเจŸเจฐเจจเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจฒเจฟเฉฐเจ•เจพเจ‚ เจฆเจพ เจ‡เฉฑเจ• เจธเจฟเฉฐเจŸเฉˆเจ•เจŸเจฟเจ• เจŸเฉเจฐเฉ€ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจชเฉเจฐเจตเจพเจน เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ‡เฉฑเจ• เจนเจตเจพเจฒเจพ เจซเฉˆเจธเจฒเฉ‡ เจฆเจพ เจฐเฉเฉฑเจ– เจฌเจฃเจฆเจพ เจนเฉˆ เจœเฉ‹ เจธเจพเจฐเฉ‡ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจฃ เจ•เฉ€เจคเฉ‡ เจธเจฐเฉ‹เจค เจชเจพเจ เจพเจ‚ เจฆเฉ‡ เจตเจฟเจ•เจพเจธ เจฆเฉ‡ เจ…เจจเฉเจญเจต เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเจพ เจนเฉˆเฅค

เจŸเฉˆเจธเจŸ เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจ•เฉ‹เจก เจชเฉˆเจŸเจฐเจจเจพเจ‚ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจฎเจพเจจ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจšเฉ‹เจ‚ เจฒเฉฐเจ˜เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‡เฉฑเจ• เจนเจตเจพเจฒเจพ เจซเฉˆเจธเจฒเฉ‡ เจฆเฉ‡ เจฐเฉเฉฑเจ– เจฆเฉ‡ เจตเจฟเจฐเฉเฉฑเจง เจœเจพเจ‚เจšเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค เจ—เฉเจ†เจ‚เจขเฉ€ เจธเจผเจพเจ–เจพเจตเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจตเฉฑเจกเฉ€เจ†เจ‚ เจ…เฉฐเจคเจฐ เจœเจพเจ‚เจš เจ•เฉ€เจคเฉ‡ เจœเจพ เจฐเจนเฉ‡ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเจฟเจ—เจพเฉœ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค เจธเจฟเจธเจŸเจฎ เจจเจพ เจธเจฟเจฐเจซเจผ เจŸเฉˆเจ‚เจชเจฒเฉ‡เจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจธเจ—เฉ‹เจ‚ เจ‡เฉฑเจ• เจธเฉเจงเจพเจฐ เจฆเจพ เจธเฉเจเจพเจ… เจตเฉ€ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, OpenSSL เจ•เฉ‹เจก เจตเจฟเฉฑเจš, เจจเจฟเจฐเจฎเจพเจฃ โ€œ(s1 == NULL) โˆง (s2 == NULL)โ€ เจชเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€, เจœเฉ‹ เจ•เจฟ เจธเจฟเฉฐเจŸเฉˆเจ•เจธ เจŸเฉเจฐเฉ€ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซ 8 เจตเจพเจฐ เจ†เจ‡เจ† เจธเฉ€, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจจเจพเจฒ เจธเจญ เจคเฉ‹เจ‚ เจจเจœเจผเจฆเฉ€เจ•เฉ€ เจธเจผเจพเจ–เจพ โ€œ(s1 == NULL) || (s2 == NULL)" เจฒเจ—เจญเจ— 7 เจนเจœเจผเจพเจฐ เจตเจพเจฐ เจ†เจ‡เจ†เฅค เจธเจฟเจธเจŸเจฎ เจจเฉ‡ เจ‡เฉฑเจ• เจตเจฟเจ—เจพเฉœ เจฆเจพ เจตเฉ€ เจชเจคเจพ เจฒเจ—เจพเจ‡เจ† โ€œ(s1 == NULL) | (s2 == NULL)" เจœเฉ‹ เจฆเจฐเจ–เจค เจตเจฟเฉฑเจš 32 เจตเจพเจฐ เจ†เจˆ เจนเฉˆเฅค

เจ‡เฉฐเจŸเฉˆเจฒ เจจเฉ‡ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฌเฉฑเจ— เจฆเฉ€ เจชเจ›เจพเจฃ เจ•เจฐเจจ เจฒเจˆ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจซเจฒเฉˆเจ— เจฎเจธเจผเฉ€เจจ เจฒเจฐเจจเจฟเฉฐเจ— เจธเจฟเจธเจŸเจฎ เจ•เฉ‹เจก เจ–เฉ‹เจฒเฉเจนเจฟเจ† เจนเฉˆ

เจ•เฉ‹เจก เจฆเฉ‡ เจธเจจเจฟเฉฑเจชเจŸ เจจเฉ‚เฉฐ เจชเจพเจฐเจธ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ "if (x = 7) y = x;" เจธเจฟเจธเจŸเจฎ เจจเฉ‡ เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจ•เฉ€เจคเจพ เจนเฉˆ เจ•เจฟ "เจตเฉ‡เจฐเฉ€เจเจฌเจฒ == เจจเฉฐเจฌเจฐ" เจจเจฟเจฐเจฎเจพเจฃ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเฉฐเจ–เจฟเจ†เจคเจฎเจ• เจฎเฉเฉฑเจฒเจพเจ‚ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจ•เจฐเจจ เจฒเจˆ "if" เจ•เจฅเจจ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ, เจ‡เฉฑเจ• เจ‰เฉฑเจš เจธเฉฐเจญเจพเจตเจจเจพ เจฆเฉ‡ เจจเจพเจฒ, "if" เจธเจฎเฉ€เจ•เจฐเจจ เจตเจฟเฉฑเจš เจธเฉฐเจ•เฉ‡เจค "เจตเฉ‡เจฐเฉ€เจเจฌเจฒ = เจจเฉฐเจฌเจฐ" เจ•เจพเจฐเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ‡เฉฑเจ• เจŸเจพเจˆเจชเฉ‹ เจชเจฐเฉฐเจชเจฐเจพเจ—เจค เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจตเฉ€ เจ…เจœเจฟเจนเฉ€ เจ—เจฒเจคเฉ€ เจจเฉ‚เฉฐ เจซเฉœ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจจ, เจชเจฐ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ‰เจฒเจŸ, เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจซเจฒเฉˆเจ— เจคเจฟเจ†เจฐ เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ‡ เจธเฉฐเจญเจพเจตเฉ€ เจตเจฟเจ•เจฒเจชเจพเจ‚ เจฆเจพ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพเจ‰เจฃเจพ เจฎเฉเจธเจผเจ•เจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจน เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจฟเฉฑเจš เจนเจฐ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจจเจฟเจฐเจฎเจพเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ‡ เจ…เฉฐเจ•เฉœเจฟเจ†เจ‚ 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจนเฉˆเฅค เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ.

เจ‡เฉฑเจ• เจชเฉเจฐเจฏเฉ‹เจ— เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, cURL เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจฆเฉ‡ เจธเจฐเฉ‹เจค เจ•เฉ‹เจก เจตเจฟเฉฑเจš ControlFlag เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจ•เจธเจฐ เจ‰เฉฑเจš-เจ—เฉเจฃเจตเฉฑเจคเจพ เจ…เจคเฉ‡ เจชเฉเจฐเจฎเจพเจฃเจฟเจค เจ•เฉ‹เจก เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจตเจœเฉ‹เจ‚ เจฆเจฐเจธเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, "s->keepon" เจฌเจฃเจคเจฐ เจคเฉฑเจค เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจธเจฅเจฟเจฐ เจตเจฟเจธเจผเจฒเฉ‡เจธเจผเจ• เจฆเฉเจ†เจฐเจพ เจ…เจฃเจฆเฉ‡เจ–เฉ€ เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจฆเจพ เจชเจคเจพ เจฒเจ—เจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€, เจœเจฟเจธเจฆเฉ€ เจ‡เฉฑเจ• เจธเฉฐเจ–เจฟเจ†เจคเจฎเจ• เจ•เจฟเจธเจฎ เจธเฉ€, เจชเจฐ เจฌเฉเจฒเฉ€เจ…เจจ เจฎเฉเฉฑเจฒ TRUE เจจเจพเจฒ เจคเฉเจฒเจจเจพ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ€เฅค OpenSSL เจ•เฉ‹เจก เจตเจฟเฉฑเจš, "(s1 == NULL) โˆง (s2 == NULL)" เจฆเฉ‡ เจจเจพเจฒ เจ‰เจชเจฐเฉ‹เจ•เจค เจธเจฎเฉฑเจธเจฟเจ† เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, "(-2 == rv)" เจธเจฎเฉ€เจ•เจฐเจจเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉ€ เจตเจฟเจ—เจพเฉœ เจธเจจ (เจ˜เจŸเจพเจ“ เจ‡เฉฑเจ• เจŸเจพเจˆเจชเฉ‹ เจธเฉ€เฅค ) เจ…เจคเฉ‡ "BIO_puts(bp, ":")

เจธเจฐเฉ‹เจค: opennet.ru

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹