LDAP-соединение ldap_sasl_bind_s дает утверждение - PullRequest
0 голосов
/ 08 декабря 2011

Итак, я разрабатываю приложение LDAP для Red Hat 5.5.

Я не делал LDAP раньше, поэтому я читаю документы по мере продвижения. Я использую OpenLDAP версии 2.3

Мой исходный код выглядит следующим образом:

LDAP * ld;
int version=LDAP_VERSION3;
int retVal;
berval creds;
berval *serverCreds;

retVal= ldap_initialize(&ld,"ldap://myhost"); //myhost is an actual hostname.
if(retVal !=0)
{
    aWarning() << "Could not connect to host:" << hostname;
}

ldap_set_option(ld,LDAP_OPT_PROTOCOL_VERSION,&version);

creds.bv_val = "magic";  //These don't matter since I'm not using a cred mechanism.
creds.bv_len = strlen("magic");

cout << ldap_sasl_bind_s(ld,"uid=username, ou=groupname",NULL,&creds,NULL,NULL,servercred);

}

Я следовал одному из немногих примеров, которые я мог найти здесь для реализации LDAP на c / c ++:

http://www -archive.mozilla.org / каталог / csdk-Docs / sasl.htm

Но когда я запускаю это, я получаю следующую ошибку:

 ../../../libraries/libldap/sasl.c:108: ldap_sasl_bind: Assertion '((ber)->ber_opts.lbo_valid==0x2)' failed.

Основываясь на некоторых моих собственных исследованиях, я, кажется, предлагаю что-то вроде ошибки памяти из более поздней версии:

http://sourceforge.net/mailarchive/forum.php?thread_name=9F7FA2E0294A934CA0CD9E97BD580F840A801834%40CCS-EXCHANGE1.brynmill.swan.ac.uk&forum_name=vufind-tech

Мне любопытно, если кто-нибудь, знакомый с LDAP, увидит какие-либо явные ошибки или уже сталкивался с этой проблемой раньше.

Спасибо

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Исправлена ​​проблема. Похоже, что наш системный администратор неправильно установил LDAP и наши библиотеки для наших libldap.so и liblber.so находились в разных версиях. Они связались нормально, но это вызвало некоторую несовместимость во время выполнения, что вызвало утверждения.

Я еще не закончил работу привязки, так как теперь я получаю сообщение об ошибке «не могу связаться с сервером LDAP», но я собираюсь пометить это как ответившее, поскольку я исправил проблему assert.

0 голосов
/ 08 декабря 2011

Поскольку вы предоставляете cred, bv_len нужно правильное значение strlen("magic");

...