Secure CRT Functions

Visual C++ 2005에서는 CRT함수들이 ‘_s’ 꼬리를 달고 새로 작성됐다. 대표적인 특징이라면, 버퍼의 크기를 파라미터로 넘겨준다는 것인데, 예를 들어 memcpy함수의 경우 destination buffer의 크기를 명시하는 값이 파라 미터로 추가되는 식이다. 따라서 memcpy_s함수의 프로토타입은 다음과 같이 선언된다.

감히, MSDN을 무시하고 이런 함수를 사용한다면…, 적어도 나의 경우에는, 당연히 Buffer Overflow를 방지할 수 있도록 수정된 것이라고 기대했다. 나라면 분명히 그렇게 했을 것이다. 그러나 Microsoft는 그렇게 하지 않았다.

It should also be noted that the secure functions do not prevent or correct security errors; rather, they catch errors when they occur. They perform additional checks for error conditions, and in the case of an error, they invoke an error handler. ((Security Enhancements in the CRT , MSDN))

즉, 에러를 보안오류를 해결해주진 않고, 그 에러에 대한 처리를 할 수 있도록 해준다는 것이다. MSDN을 좀 더 살펴보면, _set_invalid_parameter_handler함수를 사용한 예제가 나오긴 한다. 근데, 그렇게 하는 게 정말 좋은 거야?

결론…,
감히 MSDN을 무시해? 넌 당해도 싸!

말귀를 못 알아듣는 상사, 혹은 동료?

너무도 흔히 이야기되는, 직장에서, 자신을 제외한 사람들의 약점이란, 그들은 도무지 말이 통하지 않는 다는 것이다. 그들은 게으르고 무식하고 이기적이기까지 해서, 도무지 다른 사람의 말을 들으려 하지 않는다는 것이다. 어떻게 그런 인격을 가진 사람이 존재할까 의심이 되지만, 들리는 말에 의하면, 그들은 실존인물인 것이다. 그토록 싫어하는 사람과 계속해서 한 직장에 다니고 있다는 사실이 약간은 놀랍기까지 하다. 어쨌든…

본인의 의도가 상대방에게 제대로 전달되지 못했다고 해서, 반드시 그 상대에게 문제가 있다고만 할 수 없는 것이, 불완전하게 끝나버린 대화에는 그것을 시작한 이에게도 일정부분의 책임이 있기 때문이다. 전달하고자 했던 부분을 제대로 하지 못했다는 면에서라면, 목표를 성공하지 못한 이에게 더 큰 책임이 있다고 할 수 있겠다. 물건을 팔기 위해서 소비자를 설득시켜야 하는 쪽이 장사치이듯이, 설득을 시키지 못한 쪽이 상대방을 비난할 필요가 없단 뜻이다.

내가 한번도 만나보지 못한 사람을, 당신은 매번 함께 부대끼고 있다는 사실이 뭔가 이상하지 않은가?

설득하지 못한 자신을 탓해라. 그 다음에, 사람을 탓하든 말든 그건 당신의 자유다.