2010-05-26 5 views
1

GetDllDirectory은 모호한 값을 생성합니다. 누군가가 SetDllDirectory GetDllDirectory에 의해 생성 된 애매한 값에 어떻게 대처할 수 있습니까?

에 빈 문자열을 전달 SetDllDirectory

  • 누군가 통과 NULL
  • SetDllDirectory

    • 아무도 전화하지 않았다 :이 호출이 생산하는 문자열이 비어있는 경우, 다음 중 하나를 의미합니다 첫 번째 두 경우는 제 목적과 동일하지만 세 번째 경우는 문제입니다. "이전"값을 저장하려면 GetDllDirectory을 호출하고 "새로운"값을 임시로 설정하려면 SetDllDirectory을 호출하고 나중에 "이전"값을 복원하려면 SetDllDirectory을 다시 쓰려면 저장/복원 코드를 써야합니다. 일부는 되돌릴 위험이 있습니다. 다른 프로그래머의 의도.

      다른 프로그래머가 현재 작업 디렉토리를 DLL 검색 순서로 사용하려는 경우 (즉, 처음 두 글 머리표 중 하나가 참일 경우) SetDllDirectory에 빈 문자열을 전달하면 DLL 검색 순서에서 현재 작업 디렉토리로 이동하여 다른 프로그래머의 의도와 반대 방향으로 이동합니다.

      누구나이 모호성을 제거하거나 해결할 방법을 제안 할 수 있습니까?

      P. DLL 검색 순서에서 현재 작업 디렉토리를 보안 구멍으로 해석 할 수 있음을 알고 있습니다. 그럼에도 불구하고 이것이 기본 동작이며 내 코드가이를 취소 할 수있는 위치에 있지 않습니다. 내 코드는 모든 잠재적 호출자의 기대치와 호환 될 필요가 있습니다. 그 중 많은 부분이 크고 낡았습니다.

  • 답변

    0

    이 문제가 해결되지 않았습니다. 바위와 어려운 곳 사이에서, 당신은 NULL이 통과되었다고 가정해야합니다. 이미 레지스트리 설정으로 안전한 검색을 가능하게하는 방법이 있습니다.

    +0

    예상대로입니다. 반면에 누군가가 밝은 아이디어를 게시 할 때까지 얼마나 기다려야 하는지를 아는 것은 어렵습니다. :-) –

    +0

    @Integer : 충분히 길죠? –

    관련 문제