- 论坛徽章:
- 0
|
- vhar_t *hpsk;
- vhar_t *getpskbyaddr(struct sockaddr *);
复制代码
- #ifdef CYH
- printf("\nnext is by yvonne\n");
- #endif
- /* by yvonne */
- if(iph1->;side==INITIATOR&&iph1->;approval->;authmethod==OAKLEY_ATTR_AUTH_METHOD_PSKEY&&iph1->;etype == ISAKMP_ETYPE_IDENT)
- {
- //取psk,给hpsk赋值
- #ifdef CYH
- printf("\nbegin getpskbyaddr function");
- #endif
-
- if(NULL==(hpsk=getpskbyaddr(iph1->;remote)))//原函数在下面
- printf("\nhpsk is NULL\n");
-
- #ifdef CYH
- printf("\nend getpskbyaddr, begin eay_md5_one function");
- #endif
- .......
- ......
- }
复制代码
- vchar_t *
- getpskbyaddr(remote)
- struct sockaddr *remote;
- {
- vchar_t *key = NULL;
- char addr[NI_MAXHOST], port[NI_MAXSERV];
-
- GETNAMEINFO(remote, addr, port);
- #ifdef CYH
- printf("\n begin getpsk funtion\n");
- #endif
- key = getpsk(addr, strlen(addr));
- #ifdef CYH
- if(NULL==key)printf("\n key is NULL\n");
- printf("\n end getpsk\n");
- #endif
- return key;
- }
复制代码
调试信息如下:
root@localhost racoon]# env LD_LIBRARY_PATH=/usr/local/lib racoon -d -F -f /usr/local/etc/racoon/racoon.conf
Foreground mode.
...................
...................
next is by yvonne
begin getpskbyaddr function
begin getpsk funtion
read cunchun
end getpsk
段错误
[root@localhost racoon]#
很明显的是,这一语句
if(NULL==(hpsk=getpskbyaddr(iph1->;remote)))//原函数在下面
printf("\nhpsk is NULL\n" ;
没有执行,但是,getpskbyaddr()的确应该返回指针地址了,怎么就判断不了呢,这个我不懂,能
否指点一下
我把语句if(NULL==(hpsk=getpskbyaddr(iph1->;remote))) 屏蔽掉,再运行程序,
可以打印出 printf("\nhpsk is NULL\n" ;中的语句.
但它的下一条printf语句:
#ifdef CYH
printf("\nend getpskbyaddr, begin eay_md5_one function" ;
#endif
就不执行了,并显示段错误.
真是郁闷!![/code] |
|