[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] branch master updated: fix #8050 (plus more code cleanup)
From: |
gnunet |
Subject: |
[gnunet] branch master updated: fix #8050 (plus more code cleanup) |
Date: |
Tue, 09 Jan 2024 19:49:13 +0100 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new 9746a780b fix #8050 (plus more code cleanup)
9746a780b is described below
commit 9746a780b7804ae88fa8a2bd9c17661054e1081e
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Tue Jan 9 19:49:09 2024 +0100
fix #8050 (plus more code cleanup)
---
src/lib/util/strings.c | 68 +++++++++++++++++++++++++++++---------------------
1 file changed, 40 insertions(+), 28 deletions(-)
diff --git a/src/lib/util/strings.c b/src/lib/util/strings.c
index 7751c7aa9..7039496f7 100644
--- a/src/lib/util/strings.c
+++ b/src/lib/util/strings.c
@@ -1478,20 +1478,13 @@ GNUNET_STRINGS_parse_ipv4_policy (const char
*routeListX)
struct GNUNET_STRINGS_IPv6NetworkPolicy *
GNUNET_STRINGS_parse_ipv6_policy (const char *routeListX)
{
- unsigned int count;
- unsigned int i;
- unsigned int len;
- unsigned int pos;
- int start;
- int slash;
+ size_t count;
+ size_t len;
+ size_t pos;
int ret;
char *routeList;
struct GNUNET_STRINGS_IPv6NetworkPolicy *result;
- unsigned int bits;
unsigned int off;
- int save;
- int colon;
- char dummy[2];
if (NULL == routeListX)
return NULL;
@@ -1500,8 +1493,8 @@ GNUNET_STRINGS_parse_ipv6_policy (const char *routeListX)
return NULL;
routeList = GNUNET_strdup (routeListX);
count = 0;
- for (i = 0; i < len; i++)
- if (';' == routeList[i])
+ for (size_t j = 0; j < len; j++)
+ if (';' == routeList[j])
count++;
if (';' != routeList[len - 1])
{
@@ -1511,27 +1504,34 @@ GNUNET_STRINGS_parse_ipv6_policy (const char
*routeListX)
GNUNET_free (routeList);
return NULL;
}
-
- result = GNUNET_malloc (sizeof(struct GNUNET_STRINGS_IPv6NetworkPolicy)
- * (count + 1));
- i = 0;
+ GNUNET_assert (count < UINT_MAX);
+ result = GNUNET_new_array (count + 1,
+ struct GNUNET_STRINGS_IPv6NetworkPolicy);
pos = 0;
- while (i < count)
+ for (size_t i = 0; i < count; i++)
{
+ size_t start;
+ size_t slash;
+
start = pos;
while (';' != routeList[pos])
pos++;
slash = pos;
- while ((slash >= start) && (routeList[slash] != '/'))
+ while ( (slash >= start) &&
+ (routeList[slash] != '/') )
slash--;
if (slash < start)
{
- memset (&result[i].netmask, 0xFF, sizeof(struct in6_addr));
+ memset (&result[i].netmask,
+ 0xFF,
+ sizeof(struct in6_addr));
slash = pos;
}
else
{
+ size_t colon;
+
routeList[pos] = '\0';
for (colon = pos; ':' != routeList[colon]; colon--)
if ('/' == routeList[colon])
@@ -1540,19 +1540,28 @@ GNUNET_STRINGS_parse_ipv6_policy (const char
*routeListX)
{
routeList[colon] = '\0';
if (GNUNET_OK !=
- parse_port_policy (&routeList[colon + 1], &result[i].pp))
+ parse_port_policy (&routeList[colon + 1],
+ &result[i].pp))
{
GNUNET_free (result);
GNUNET_free (routeList);
return NULL;
}
}
- ret = inet_pton (AF_INET6, &routeList[slash + 1], &result[i].netmask);
+ ret = inet_pton (AF_INET6,
+ &routeList[slash + 1],
+ &result[i].netmask);
if (ret <= 0)
{
- save = errno;
- if ((1 != sscanf (&routeList[slash + 1], "%u%1s", &bits, dummy)) ||
- (bits > 128))
+ char dummy;
+ unsigned int bits;
+ int save = errno;
+
+ if ( (1 != sscanf (&routeList[slash + 1],
+ "%u%c",
+ &bits,
+ &dummy)) ||
+ (bits > 128) )
{
if (0 == ret)
LOG (GNUNET_ERROR_TYPE_WARNING,
@@ -1561,7 +1570,8 @@ GNUNET_STRINGS_parse_ipv6_policy (const char *routeListX)
else
{
errno = save;
- LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING, "inet_pton");
+ LOG_STRERROR (GNUNET_ERROR_TYPE_WARNING,
+ "inet_pton");
}
GNUNET_free (result);
GNUNET_free (routeList);
@@ -1582,7 +1592,9 @@ GNUNET_STRINGS_parse_ipv6_policy (const char *routeListX)
}
}
routeList[slash] = '\0';
- ret = inet_pton (AF_INET6, &routeList[start], &result[i].network);
+ ret = inet_pton (AF_INET6,
+ &routeList[start],
+ &result[i].network);
if (ret <= 0)
{
if (0 == ret)
@@ -1590,13 +1602,13 @@ GNUNET_STRINGS_parse_ipv6_policy (const char
*routeListX)
_ ("Wrong format `%s' for network\n"),
&routeList[slash + 1]);
else
- LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR, "inet_pton");
+ LOG_STRERROR (GNUNET_ERROR_TYPE_ERROR,
+ "inet_pton");
GNUNET_free (result);
GNUNET_free (routeList);
return NULL;
}
pos++;
- i++;
}
GNUNET_free (routeList);
return result;
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnunet] branch master updated: fix #8050 (plus more code cleanup),
gnunet <=