Статус: Участник
Группы: Участники
Зарегистрирован: 22.05.2012(UTC) Сообщений: 22 Откуда: СПб
|
Добрый день! у меня есть функция, которая перечисляет список урлов в CDP, но в одном сертификате она дает сбой и программа вылетает. Я не знаток си++, на форумах спрашивал можно ли проверить переменную на предмет некорректного адреса - говорят, что нельзя... Ниже представлен фргмент, который работает в принципе, но для одного сертификата вылетает. Вопрос в том, можно ли поставить какую-нибудь дополнительную проверку перед тем как попытаться получить очередной URL Цитата: PCERT_EXTENSION pCe = CertFindExtension(szOID_CRL_DIST_POINTS, pCertInfo->cExtension, pCertInfo->rgExtension); if (pCe) { PCRL_DIST_POINTS_INFO pCrlDistPointsInfo = NULL; PCRL_DIST_POINT *pCrlDistPointsPtr = NULL; PCRL_DIST_POINT pCrlDistPoints = NULL; DWORD pdwCrlDistPoints = sizeof (CRL_DIST_POINTS_INFO);
if (!CryptDecodeObjectEx(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, szOID_CRL_DIST_POINTS, pCe->Value.pbData, pCe->Value.cbData, CRYPT_DECODE_ALLOC_FLAG, (PCRYPT_DECODE_PARA) NULL, &pCrlDistPointsInfo, &pdwCrlDistPoints)) { printf("\n\nCannot decode CRL URL.\n\n"); } if (pCrlDistPointsInfo) {
pCrlDistPointsPtr = (PCRL_DIST_POINT*) pCrlDistPointsInfo->rgDistPoint; if (pCrlDistPointsPtr && pCrlDistPointsInfo->cDistPoint > 0) {
findCDP = true; fwprintf(pFile, L"^^"); for (int i = 0; i < pCrlDistPointsInfo->cDistPoint; i++) { pCrlDistPoints = &pCrlDistPointsInfo->rgDistPoint[i]; if (pCrlDistPoints) {
LPWSTR str = (LPWSTR) pCrlDistPoints->DistPointName._empty_union_.FullName.rgAltEntry->_empty_union_.pwszURL;
fwprintf(pFile, str);//ТУТ ВЫЛЕТАЕТ, в дебаге при выводе переменной str ошибка "0x2e (Address 0x2e out of bounds)" fwprintf(pFile, L";");
} printf("%d\n",i); }
} free(pCrlDistPointsInfo); } }
Вложение(я):  113.cer (1kb) загружен 3 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,518   Сказал «Спасибо»: 555 раз Поблагодарили: 2252 раз в 1757 постах
|
В приложенной сертификате нет адреса (URL) в CDP + к тому же это корневой сертификат Отредактировано пользователем 17 декабря 2012 г. 16:48:32(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.05.2012(UTC) Сообщений: 22 Откуда: СПб
|
Андрей * написал:В приложенной сертификате нет адреса (URL) в CDP + к тому же это корневой сертификат
тем не менее, в цикл все равно заходит почему то ... вопрос в том как этого избежать
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,518   Сказал «Спасибо»: 555 раз Поблагодарили: 2252 раз в 1757 постах
|
mgurov написал:Андрей * написал:В приложенной сертификате нет адреса (URL) в CDP + к тому же это корневой сертификат
тем не менее, в цикл все равно заходит почему то ... вопрос в том как этого избежать Потому что нет проверки... после Цитата: if (pCrlDistPoints) {
DistPointName.FullName.cAltEntry - кол-во элементов - нужно их также перебрать в цикле.. Цитата:первый цикл: pCrlDistPointsInfo ... cDistPoint кол-во точек CDP вложенный цикл: CrlDistPoints[i].DistPointName.FullName ... cAltEntry - кол-во адресов (URL) у точки CDP[i] далее работаем с CDP[i]...array[j].pwszURL Отредактировано пользователем 17 декабря 2012 г. 16:59:22(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.05.2012(UTC) Сообщений: 22 Откуда: СПб
|
спасибо большое, вроде разобрался.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,518   Сказал «Спасибо»: 555 раз Поблагодарили: 2252 раз в 1757 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.05.2012(UTC) Сообщений: 22 Откуда: СПб
|
в том примере нет вложенного цикла, это то же самое что было у меня изначально и это не работает когда нет CDP
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,518   Сказал «Спасибо»: 555 раз Поблагодарили: 2252 раз в 1757 постах
|
mgurov написал:в том примере нет вложенного цикла, это то же самое что было у меня изначально и это не работает когда нет CDP там "на тему" про несколько точек и соответствующих адресов у каждой... в принципе - все есть в MSDN CRL_DIST_POINTS_INFO Отредактировано пользователем 17 декабря 2012 г. 18:18:03(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.05.2012(UTC) Сообщений: 22 Откуда: СПб
|
всетаки ошибка осталась,
pCrlDistPoints->DistPointName._empty_union_.FullName.cAltEntry для этого сертификата дает единицу, а не ноль, как должно быть. Видимо, ошибка в криптопро...
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,518   Сказал «Спасибо»: 555 раз Поблагодарили: 2252 раз в 1757 постах
|
mgurov написал:всетаки ошибка осталась,
pCrlDistPoints->DistPointName._empty_union_.FullName.cAltEntry для этого сертификата дает единицу, а не ноль, как должно быть. Видимо, ошибка в криптопро... Причем здесь КриптоПРО? + Сертификат на базе RSA, КриптоПРО CSP здесь вообще не участвует. P.s. в моем софте с этим сертификатом нормально все - "не падает", CRL URL кол-во = 0 Отредактировано пользователем 17 декабря 2012 г. 19:07:11(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close