libpq с SSL на VC 2010

У меня есть вопрос компиляции libpq на windows (VS2010 32 и 64bit) с поддержкой SSL.
Я скачал последний источник
Postgres а также OpenSSL Win64 v1.0.1c.
Я запустил nmake в папке libpq:

cd postgresql-9.2.2 \ interfaces \ libpq

nmake / f win32.mak CPU = AMD64 USE_SSL = 1 SSL_INC = C: \ OpenSSL-Win64 \ include SSL_LIB_PATH = C: \ OpenSSL-Win64 \ lib

Затем компиляция заканчивается тем, что он не может найти bufferoverflowU.lib.
В поисках немного я обнаружил, что эта библиотека развернута с Windows SDK и, поскольку VS 2005 больше не нужен (см. Ошибка компоновки Vista / Win 7 SDK bufferoverflowu.lib ).
Итак, в файле make libpq (win32.mak: 20) я закомментировал строку

ADD_SECLIB = bufferoverflowU.lib

и это хорошо компилируется. Я также не испытывал проблем при тестировании этого libpq с помощью ssl.

Нужно ли с плохой совестью отбрасывать bufferoverflowU.lib из сборки или это только потому, что make-файл не для VS 2010?
(Кстати: openssl изменил свои имена библиотек на * MD.lib соответственно * MT.lib в папке VC. Старые именованные библиотеки находятся в C: \ OpenSSL-Win64 \ lib, одна папка вверх)

Может кто-нибудь сказать мне, требуется ли bufferoverflowU.lib в сборке VS2010?

Ура,
550

2

Решение

Может кто-нибудь сказать мне, требуется ли bufferoverflowU.lib в сборке VS2010?

Нет, это больше не нужно. bufferoverflow.lib и друзья были вставлены в код, который проверяет стек cookie. Смотрите этот KB: Вы можете получать сообщения об ошибках «Linker tools error LNK2001» при создании исходного кода с помощью пакета разработки программного обеспечения Win32 (SDK) или пакета разработки драйверов Windows Server 2003 (DDK) для Windows Server 2003 с пакетом обновления 1 (SP1)..

Я считаю, что вы можете решить эту проблему и укрепить свои исполняемые файлы с помощью /GS переключатель.


nmake /f win32.mak CPU=AMD64 USE_SSL=1 SSL_INC=C:\OpenSSL-Win64\include
SSL_LIB_PATH=C:\OpenSSL-Win64\lib

Вы должны рассмотреть возможность добавления всех переключателей, обсуждаемых на Защита вашего кода с помощью защиты Visual C ++. Вот список на случай, если вам не хватает времени:

  • / GS
  • / SafeSEH
  • / NXCompat
  • / DYNAMICBASE

Кроме того, вы должны #define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 если возможно. Наконец, вы должны также добавить #pragma strict_gs_check(on) к исходным файлам высокого риска в Windows. Его следует использовать экономно, но рекомендуется в ситуациях высокого риска, например, когда исходный файл анализирует входные данные из Интернета.

Обычно в проектах * nix не хватает переключателей безопасности в Windows. Я называю это «отключением», и я видел, что это идет обоими путями (* nix -> Windows и Windows -> * nix). Каждый не может быть экспертом во всем;)

(Извините, что бродил немного. Плохие настройки проекта — моя любимая мозоль).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]