gpt4 book ai didi

c++ - ldap_modify 函数通过访问冲突?

转载 作者:可可西里 更新时间:2023-11-01 10:27:05 26 4
gpt4 key购买 nike

我正在尝试使用 ldap_modify 函数修改 AD 属性值...

代码如下...

    LDAPMod *list_of_attrs[1]={0};
char *Password[] = {"Password2"};
LDAPMessage *result=NULL;
int msgid;
int rc=0;
LDAPMod attribute2;

attribute2.mod_type = (PCHAR)"Password number";
attribute2.mod_op = LDAP_MOD_REPLACE;
attribute2.mod_vals.modv_strvals=Password;
list_of_attrs[0] = &attribute2;


wchar_t dnName[100]={0};
char *dn = "CN=test,CN=Users,DC=raja,DC=com";
mbstowcs(dnName,dn, 100);
PWCHAR dnNameval = (PWCHAR)malloc(sizeof(PWCHAR) * 20);
wcscpy(dnNameval,dnName);

msgid=ldap_modify(pLdapConnection,(const PCHAR)dnNameval, list_of_attrs);

但是,当涉及到最后一行(msgid)时,发生了访问冲突异常..

*AD2.exe 中 0x76f693ac 处未处理的异常:0xC0000005:访问冲突读取位置 0xcccccccc。*

请帮我解决一下...提前致谢。

最佳答案

我可能从location 0xcccccccc 猜测崩溃是由于未初始化的指针引起的。阅读代码时,pLdapConnection 似乎就是那个指针。

更新

阅读 OP 评论后,现在我可以看到问题出在第三个参数中,即引用 MSDN,对条目进行修改的空终止数组。因此,正确的用法应该是例如

LDAPMod attribute2;     
// Initialize attribute2
............
LDAPMod *list_of_attrs[2]={&attribute2, 0};

也就是说,数组的大小应该比您要定义的条目数多一个,并且最后一个数组项应该为 NULL。

关于c++ - ldap_modify 函数通过访问冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12889797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com