File novell-ipsec-tools_plugins-cfparse.patch of Package novell-ipsec-tools
Index: ipsec-tools-0.7.1/src/racoon/cfparse.y
===================================================================
--- ipsec-tools-0.7.1.orig/src/racoon/cfparse.y
+++ ipsec-tools-0.7.1/src/racoon/cfparse.y
@@ -1018,12 +1018,16 @@ authgroup
grouplist = racoon_realloc(icc->grouplist,
sizeof(char**)*(icc->groupcount+1));
- if (grouplist == NULL)
+ if (grouplist == NULL) {
yyerror("unable to allocate auth group list");
+ return -1;
+ }
groupname = racoon_malloc($1->l+1);
- if (groupname == NULL)
+ if (groupname == NULL) {
yyerror("unable to allocate auth group name");
+ return -1;
+ }
memcpy(groupname,$1->v,$1->l);
groupname[$1->l]=0;
@@ -1051,8 +1055,10 @@ splitdns
if (!icc->splitdns_len)
{
icc->splitdns_list = racoon_malloc($1->l);
- if(icc->splitdns_list == NULL)
+ if(icc->splitdns_list == NULL) {
yyerror("error allocating splitdns list buffer");
+ return -1;
+ }
memcpy(icc->splitdns_list,$1->v,$1->l);
icc->splitdns_len = $1->l;
}
@@ -1060,8 +1066,10 @@ splitdns
{
int len = icc->splitdns_len + $1->l + 1;
icc->splitdns_list = racoon_realloc(icc->splitdns_list,len);
- if(icc->splitdns_list == NULL)
+ if(icc->splitdns_list == NULL) {
yyerror("error allocating splitdns list buffer");
+ return -1;
+ }
icc->splitdns_list[icc->splitdns_len] = ',';
memcpy(icc->splitdns_list + icc->splitdns_len + 1, $1->v, $1->l);
icc->splitdns_len = len;
@@ -1185,7 +1193,8 @@ sainfo_statement
cur_sainfo->iddst,
cur_sainfo->id_i,
cur_sainfo->remoteid);
- if (check && (!check->idsrc && !cur_sainfo->idsrc)) {
+ if (check && ((check->idsrc != SAINFO_ANONYMOUS) &&
+ (cur_sainfo->idsrc != SAINFO_ANONYMOUS))) {
yyerror("duplicated sainfo: %s",
sainfo2str(cur_sainfo));
return -1;
@@ -1197,18 +1206,18 @@ sainfo_statement
sainfo_name
: ANONYMOUS
{
- cur_sainfo->idsrc = NULL;
- cur_sainfo->iddst = NULL;
+ cur_sainfo->idsrc = SAINFO_ANONYMOUS;
+ cur_sainfo->iddst = SAINFO_ANONYMOUS;
}
| ANONYMOUS sainfo_id
{
- cur_sainfo->idsrc = NULL;
+ cur_sainfo->idsrc = SAINFO_ANONYMOUS;
cur_sainfo->iddst = $2;
}
| sainfo_id ANONYMOUS
{
cur_sainfo->idsrc = $1;
- cur_sainfo->iddst = NULL;
+ cur_sainfo->iddst = SAINFO_ANONYMOUS;
}
| sainfo_id sainfo_id
{
Index: ipsec-tools-0.7.1/src/racoon/sainfo.h
===================================================================
--- ipsec-tools-0.7.1.orig/src/racoon/sainfo.h
+++ ipsec-tools-0.7.1/src/racoon/sainfo.h
@@ -36,6 +36,8 @@
#include <sys/queue.h>
+#define SAINFO_ANONYMOUS ((void *)NULL)
+
/* SA info */
struct sainfo {
vchar_t *idsrc;