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" ํํ์์ "๋ณ์ = ์ซ์" ํ์๋ ์ค์. ๊ธฐ์กด์ ์ ์ ๋ถ์๊ธฐ๋ ์ด๋ฌํ ์ค๋ฅ๋ฅผ ์ก์๋์ ๊ฒ์ด์ง๋ง ControlFlag๋ ๊ฐ๋ฅํ ๋ชจ๋ ์ต์ ์ ์ ๊ณตํ๊ธฐ ์ด๋ ค์ด ๊ธฐ์ฑ ๊ท์น์ ์ ์ฉํ์ง ์๊ณ ๋ค์ํ ๊ตฌ์กฐ์ ๋๋ ์ฌ์ฉ์ ๋ํ ํต๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ํ๋ก์ ํธ์.
์คํ์ ์ผ๋ก ๊ณ ํ์ง ๋ฐ ํ
์คํธ๋ ์ฝ๋์ ์๋ก ์์ฃผ ์ธ์ฉ๋๋ cURL ์ ํธ๋ฆฌํฐ์ ์์ค ์ฝ๋์ ControlFlag๋ฅผ ์ฌ์ฉํ์ฌ "s->keepon" ๊ตฌ์กฐ ์์๋ฅผ ์ฌ์ฉํ ๋ ์ ์ ๋ถ์๊ธฐ์์ ๊ฐ์งํ์ง ๋ชปํ ์ค๋ฅ๊ฐ ์๋ณ๋์์ผ๋ฉฐ, ์ซ์ ์ ํ์ด ์์์ง๋ง ๋ถ์ธ ๊ฐ TRUE์ ๋น๊ต๋์์ต๋๋ค. OpenSSL ์ฝ๋์์๋ ์์์ ์ธ๊ธํ "(s1 == NULL) โง (s2 == NULL)" ๋ฌธ์ ์ธ์๋ "(-2 == rv)"๋ผ๋ ํํ์์๋ ์ด์์ด ๋ฐ๊ฒฌ๋์์ต๋๋ค. ์คํ) ๋ฐ "BIO_puts(bp, ":")
์ถ์ฒ : opennet.ru