[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r30421 - in gnunet/src: tun util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r30421 - in gnunet/src: tun util |
Date: |
Sat, 26 Oct 2013 19:20:03 +0200 |
Author: grothoff
Date: 2013-10-26 19:20:02 +0200 (Sat, 26 Oct 2013)
New Revision: 30421
Modified:
gnunet/src/tun/regex.c
gnunet/src/util/strings.c
Log:
-improvements to parsers
Modified: gnunet/src/tun/regex.c
===================================================================
--- gnunet/src/tun/regex.c 2013-10-26 15:17:48 UTC (rev 30420)
+++ gnunet/src/tun/regex.c 2013-10-26 17:20:02 UTC (rev 30421)
@@ -126,7 +126,7 @@
return ret;
default:
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "Bad mask: %d\n",
+ _("Bad mask: %d\n"),
mask);
GNUNET_break (0);
return NULL;
@@ -203,6 +203,8 @@
pp->start_port);
return ret;
}
+ if (pp->end_port < pp->start_port)
+ return NULL;
cnt = pp->end_port - pp->start_port + 1;
if (GNUNET_YES == pp->negate_portrange)
cnt = 0xFFFF - cnt;
@@ -305,6 +307,11 @@
if (NULL == reg)
return NULL;
pp = port_to_regex (&v4->pp);
+ if (NULL == pp)
+ {
+ GNUNET_free (reg);
+ return NULL;
+ }
GNUNET_asprintf (&ret,
"4-%s-%s",
pp, reg);
@@ -333,6 +340,11 @@
if (NULL == reg)
return NULL;
pp = port_to_regex (&v6->pp);
+ if (NULL == pp)
+ {
+ GNUNET_free (reg);
+ return NULL;
+ }
GNUNET_asprintf (&ret,
"6-%s-%s",
pp, reg);
@@ -364,7 +376,7 @@
if (NULL == np)
return NULL;
reg = NULL;
- for (i=0; 0 != np[i].network.s_addr; i++)
+ for (i=0; (0 == i) || (0 != np[i].network.s_addr); i++)
{
line = ipv4_to_regex (&np[i]);
if (NULL == line)
@@ -385,6 +397,8 @@
GNUNET_free (line);
reg = tmp;
}
+ if (0 == np[i].network.s_addr)
+ break;
}
return reg;
}
@@ -414,7 +428,7 @@
return NULL;
reg = NULL;
memset (&zero, 0, sizeof (struct in6_addr));
- for (i=0; 0 != memcmp (&zero, &np[i].network, sizeof (struct in6_addr)); i++)
+ for (i=0; (0 == i) || (0 != memcmp (&zero, &np[i].network, sizeof (struct
in6_addr))); i++)
{
line = ipv6_to_regex (&np[i]);
if (NULL == line)
@@ -435,6 +449,8 @@
GNUNET_free (line);
reg = tmp;
}
+ if (0 == memcmp (&zero, &np[i].network, sizeof (struct in6_addr)))
+ break;
}
return reg;
}
Modified: gnunet/src/util/strings.c
===================================================================
--- gnunet/src/util/strings.c 2013-10-26 15:17:48 UTC (rev 30420)
+++ gnunet/src/util/strings.c 2013-10-26 17:20:02 UTC (rev 30421)
@@ -1354,6 +1354,7 @@
const char *pos;
int s;
int e;
+ char eol[2];
pos = port_policy;
if ('!' == *pos)
@@ -1362,17 +1363,35 @@
pos++;
}
if (2 == sscanf (pos,
- "%u-%u",
- &s, &e))
+ "%u-%u%1s",
+ &s, &e, eol))
{
+ if ( (0 == s) ||
+ (s > 0xFFFF) ||
+ (e < s) ||
+ (e > 0xFFFF) )
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Port not in range\n"));
+ return GNUNET_SYSERR;
+ }
pp->start_port = (uint16_t) s;
pp->end_port = (uint16_t) e;
return GNUNET_OK;
}
if (1 == sscanf (pos,
- "%u",
- &s))
+ "%u%1s",
+ &s,
+ eol))
{
+ if ( (0 == s) ||
+ (s > 0xFFFF) )
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Port not in range\n"));
+ return GNUNET_SYSERR;
+ }
+
pp->start_port = (uint16_t) s;
pp->end_port = (uint16_t) s;
return GNUNET_OK;
@@ -1571,8 +1590,8 @@
if (pos < strlen (routeList))
{
LOG (GNUNET_ERROR_TYPE_ERROR,
- _("Invalid format for IP: `%s'\n"),
- &routeList[pos]);
+ _("Invalid format: `%s'\n"),
+ &routeListX[pos]);
GNUNET_free (result);
GNUNET_free (routeList);
return NULL; /* oops */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r30421 - in gnunet/src: tun util,
gnunet <=