본문 바로가기

실수

(2)
Apple의 SSL 긴급 update 로 알려진 goto 를 사용하는 나쁜 예. 불과 몇일 전 Apple 은 긴급히 iOS 7.0.5 에서 7.0.6 은 물론, iOS 6.1.5 와 6.1.4 를 사용하던 기기들 에 대해 SSL 버그를 수정한 update 를 수행 하였습니다. 이는 iPhone3Gs 부터 iPhone5s 까지 모든 기기에 해당 하는 update 였습니다만, 이 문제는 다름아닌 goto 를 사용하는 나쁜 습관을 가진 프로그래머로 부터 발생된 문제라 할 수 있겠습니다. Apple 쪽에서 사용되었던 SSL code 를 보면 다음과 같습니다. (공개된 부분에 한해) static OSStatus SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams, uint8_t *signatu..
DLL 에서 dllmain 이 호출 되지 않는다 !!! 언젠가 부터, 저는 DLL 을 minGW 에서 만듭니다. 하나의 소스로 Target 만 바꿔서 32bit, 64bit 모두 찍어 낼 수 있도록 환경을 만들어 쓰다 보니 이게 너무 편했던 것이죠. 그런데, 어느순간 제가 "정석" 을 따르고 있지 않음을 깨닫게 됩니다. 그 일이 이번에 DllMain() 함수가 불리지 않는다는 것. 이전에 C 코드를 짤떈 잘 쓰이던 것이 왜 이번에 이러지? 라는 의문이 든 것이 바로 이 결과 때문 입니다. 위 이미지만 봐서는 뭐가 문제인지 모를 것 입니다만 .. 아래 코드를 보겠습니다. 중요한 것은 바로 DllMain() 함수가 불리지 않는 다는것. 중복된 프로세스에서 사용되거나, 쓰레드에 사용될 경우 기본적인 처리를 해 줘야 할 DllMain() 이 호출 없이 사용된다는 점..