[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnunet] branch master updated (b92af915f -> d07a2f30e)
From: |
gnunet |
Subject: |
[gnunet] branch master updated (b92af915f -> d07a2f30e) |
Date: |
Thu, 14 Dec 2023 22:58:12 +0100 |
This is an automated email from the git hooks/post-receive script.
sebi pushed a change to branch master
in repository gnunet.
from b92af915f Merge branch 'dev/sebi/sbox'
new be653ce5a GNS: new SBOX test cases
new d07a2f30e GNS: underscore prefix bug fixes
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
src/cli/gns/test_gns_sbox.sh | 97 ++++++++++++++++++++--
.../{test_gns_sbox.sh => test_gns_sbox_simple.sh} | 8 +-
src/plugin/gns/plugin_gnsrecord_gns.c | 38 +++------
src/service/gns/gnunet-service-gns_resolver.c | 9 +-
4 files changed, 110 insertions(+), 42 deletions(-)
copy src/cli/gns/{test_gns_sbox.sh => test_gns_sbox_simple.sh} (76%)
diff --git a/src/cli/gns/test_gns_sbox.sh b/src/cli/gns/test_gns_sbox.sh
index 54e51fa2c..0893dafed 100755
--- a/src/cli/gns/test_gns_sbox.sh
+++ b/src/cli/gns/test_gns_sbox.sh
@@ -19,22 +19,105 @@ which timeout > /dev/null 2>&1 && DO_TIMEOUT="timeout 30"
TEST_A="139.134.54.9"
MY_EGO="myego"
LABEL="testsbox"
-HASH="c93f1e400f26708f98cb19d936620da35eec8f72e57f9eec01c1afd6"
-PROTOCOL_TEXT="_smimecert"
+PREFIX1="_name"
+PREFIX2="__"
+PREFIX3="_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_"
+PREFIX4="abcdefghijklmnopqrstuvwxyz.abcdefghijklmnopqrstuvwxyz._abc"
+PREFIX5="abc.abc._abc.abc"
+PREFIX6="abc.abc._abc.abc._abc"
+PREFIX7="abc.abc._abc.abc._abc.abc"
+PREFIX8="_at"
gnunet-arm -s -c test_gns_lookup.conf
gnunet-identity -C $MY_EGO -c test_gns_lookup.conf
-gnunet-namestore -p -z $MY_EGO -a -n $LABEL -t SBOX -V "$HASH.$PROTOCOL_TEXT 1
$TEST_A" -e never -c test_gns_lookup.conf
+gnunet-namestore -p -z $MY_EGO -a -n $LABEL -t SBOX -V "$PREFIX1 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -p -z $MY_EGO -a -n $LABEL -t SBOX -V "$PREFIX2 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -p -z $MY_EGO -a -n $LABEL -t SBOX -V "$PREFIX3 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -p -z $MY_EGO -a -n $LABEL -t SBOX -V "$PREFIX4 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -p -z $MY_EGO -a -n $LABEL -t SBOX -V "$PREFIX5 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -p -z $MY_EGO -a -n $LABEL -t SBOX -V "$PREFIX6 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -p -z $MY_EGO -a -n $LABEL -t SBOX -V "$PREFIX7 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -p -z $MY_EGO -a -n '@' -t SBOX -V "$PREFIX8 1 $TEST_A" -e
never -c test_gns_lookup.conf
sleep 0.5
-RES_A=`$DO_TIMEOUT gnunet-gns --raw -u $HASH.$PROTOCOL_TEXT.$LABEL.$MY_EGO -t
A -c test_gns_lookup.conf`
-gnunet-namestore -z $MY_EGO -d -n $LABEL -t SBOX -V "$HASH.$PROTOCOL_TEXT 1
$TEST_A" -e never -c test_gns_lookup.conf
+RES_A1=`$DO_TIMEOUT gnunet-gns --raw -u $PREFIX1.$LABEL.$MY_EGO -t A -c
test_gns_lookup.conf`
+RES_A2=`$DO_TIMEOUT gnunet-gns --raw -u $PREFIX2.$LABEL.$MY_EGO -t A -c
test_gns_lookup.conf`
+RES_A3=`$DO_TIMEOUT gnunet-gns --raw -u $PREFIX3.$LABEL.$MY_EGO -t A -c
test_gns_lookup.conf`
+RES_A4=`$DO_TIMEOUT gnunet-gns --raw -u $PREFIX4.$LABEL.$MY_EGO -t A -c
test_gns_lookup.conf`
+RES_A5=`$DO_TIMEOUT gnunet-gns --raw -u $PREFIX5.$LABEL.$MY_EGO -t A -c
test_gns_lookup.conf`
+RES_A6=`$DO_TIMEOUT gnunet-gns --raw -u $PREFIX6.$LABEL.$MY_EGO -t A -c
test_gns_lookup.conf`
+RES_A7=`$DO_TIMEOUT gnunet-gns --raw -u $PREFIX7.$LABEL.$MY_EGO -t A -c
test_gns_lookup.conf`
+RES_A8=`$DO_TIMEOUT gnunet-gns --raw -u $PREFIX8.$MY_EGO -t A -c
test_gns_lookup.conf`
+gnunet-namestore -z $MY_EGO -d -n $LABEL -t SBOX -V "$PREFIX1 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -z $MY_EGO -d -n $LABEL -t SBOX -V "$PREFIX2 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -z $MY_EGO -d -n $LABEL -t SBOX -V "$PREFIX3 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -z $MY_EGO -d -n $LABEL -t SBOX -V "$PREFIX4 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -z $MY_EGO -d -n $LABEL -t SBOX -V "$PREFIX5 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -z $MY_EGO -d -n $LABEL -t SBOX -V "$PREFIX6 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -z $MY_EGO -d -n $LABEL -t SBOX -V "$PREFIX7 1 $TEST_A" -e
never -c test_gns_lookup.conf
+gnunet-namestore -z $MY_EGO -d -n '@' -t SBOX -V "$PREFIX8 1 $TEST_A" -e never
-c test_gns_lookup.conf
gnunet-identity -D $MY_EGO -c test_gns_lookup.conf
gnunet-arm -e -c test_gns_lookup.conf
rm -rf `gnunet-config -c test_gns_lookup.conf -f -s paths -o GNUNET_TEST_HOME`
-if [ "$RES_A" = "$TEST_A" ]
+if [ "$RES_A1" = "$TEST_A" ]
then
exit 0
else
- echo "Failed to resolve to proper A, got '$RES_A'."
+ echo "Failed to resolve to proper A, got '$RES_A1'."
+ exit 1
+fi
+
+if [ "$RES_A2" = "$TEST_A" ]
+then
+ exit 0
+else
+ echo "Failed to resolve to proper A, got '$RES_A2'."
+ exit 1
+fi
+
+if [ "$RES_A3" = "$TEST_A" ]
+then
+ exit 0
+else
+ echo "Failed to resolve to proper A, got '$RES_A3'."
+ exit 1
+fi
+
+if [ "$RES_A4" = "$TEST_A" ]
+then
+ exit 0
+else
+ echo "Failed to resolve to proper A, got '$RES_A4'."
+ exit 1
+fi
+
+if [ "$RES_A5" = "$TEST_A" ]
+then
+ echo "Should have failed to resolve to proper A, got '$RES_A5' anyway."
+ exit 1
+else
+ exit 0
+fi
+
+if [ "$RES_A6" = "$TEST_A" ]
+then
+ exit 0
+else
+ echo "Failed to resolve to proper A, got '$RES_A6'."
+ exit 1
+fi
+
+if [ "$RES_A7" = "$TEST_A" ]
+then
+ echo "Should have failed to resolve to proper A, got '$RES_A7' anyway."
+ exit 1
+else
+ exit 0
+fi
+
+if [ "$RES_A8" = "$TEST_A" ]
+then
+ exit 0
+else
+ echo "Failed to resolve to proper A, got '$RES_A8'."
exit 1
fi
diff --git a/src/cli/gns/test_gns_sbox.sh b/src/cli/gns/test_gns_sbox_simple.sh
similarity index 76%
copy from src/cli/gns/test_gns_sbox.sh
copy to src/cli/gns/test_gns_sbox_simple.sh
index 54e51fa2c..1706a2a22 100755
--- a/src/cli/gns/test_gns_sbox.sh
+++ b/src/cli/gns/test_gns_sbox_simple.sh
@@ -18,15 +18,15 @@ rm -rf `gnunet-config -c test_gns_lookup.conf -f -s paths
-o GNUNET_TEST_HOME`
which timeout > /dev/null 2>&1 && DO_TIMEOUT="timeout 30"
TEST_A="139.134.54.9"
MY_EGO="myego"
-LABEL="testsbox"
HASH="c93f1e400f26708f98cb19d936620da35eec8f72e57f9eec01c1afd6"
PROTOCOL_TEXT="_smimecert"
gnunet-arm -s -c test_gns_lookup.conf
gnunet-identity -C $MY_EGO -c test_gns_lookup.conf
-gnunet-namestore -p -z $MY_EGO -a -n $LABEL -t SBOX -V "$HASH.$PROTOCOL_TEXT 1
$TEST_A" -e never -c test_gns_lookup.conf
+gnunet-namestore -p -z $MY_EGO -a -n '@' -t SBOX -V "$HASH.$PROTOCOL_TEXT 1
$TEST_A" -e never -c test_gns_lookup.conf
sleep 0.5
-RES_A=`$DO_TIMEOUT gnunet-gns --raw -u $HASH.$PROTOCOL_TEXT.$LABEL.$MY_EGO -t
A -c test_gns_lookup.conf`
-gnunet-namestore -z $MY_EGO -d -n $LABEL -t SBOX -V "$HASH.$PROTOCOL_TEXT 1
$TEST_A" -e never -c test_gns_lookup.conf
+gnunet-namestore -D -c test_gns_lookup.conf
+RES_A=`$DO_TIMEOUT gnunet-gns --raw -u $HASH.$PROTOCOL_TEXT.$MY_EGO -t A -c
test_gns_lookup.conf`
+gnunet-namestore -z $MY_EGO -d -n '@' -t SBOX -V "$HASH.$PROTOCOL_TEXT 1
$TEST_A" -e never -c test_gns_lookup.conf
gnunet-identity -D $MY_EGO -c test_gns_lookup.conf
gnunet-arm -e -c test_gns_lookup.conf
rm -rf `gnunet-config -c test_gns_lookup.conf -f -s paths -o GNUNET_TEST_HOME`
diff --git a/src/plugin/gns/plugin_gnsrecord_gns.c
b/src/plugin/gns/plugin_gnsrecord_gns.c
index 2803d32a4..cc0e3167a 100644
--- a/src/plugin/gns/plugin_gnsrecord_gns.c
+++ b/src/plugin/gns/plugin_gnsrecord_gns.c
@@ -336,11 +336,12 @@ gns_string_to_value (void *cls,
struct GNUNET_GNSRECORD_SBoxRecord *box;
size_t rest;
char *prefix;
+ char *underscore_prefix;
unsigned int protocol;
unsigned int record_type;
void *bval;
size_t bval_size;
- prefix = GNUNET_malloc (strlen (s)); // TODO The allocated memory is
bigger than needed
+ prefix = GNUNET_malloc (strlen (s));
size_t prefix_size;
if (2 != sscanf (s, "%s %u ", prefix, &record_type))
{
@@ -349,38 +350,21 @@ gns_string_to_value (void *cls,
s);
return GNUNET_SYSERR;
}
- if (prefix == NULL)
+ underscore_prefix = strrchr (prefix, '.');
+ if (underscore_prefix == NULL)
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _ (
- "Unable to parse SBOX record string `%s', no prefix
found\n"),
- s);
- return GNUNET_SYSERR;
- }
- char *last_underscore = strrchr (prefix, (int) '_');
- if (last_underscore == NULL)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _ (
- "Unable to parse SBOX record string `%s', no underscore
fund\n"),
- prefix);
- return GNUNET_SYSERR;
+ underscore_prefix = prefix;
}
- char *dot_in_last_prefix = strchr (last_underscore, '.');
- if (dot_in_last_prefix != NULL)
+ else
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _ (
- "Unable to parse SBOX record string `%s', the last label
does not have an underscore\n"),
- prefix);
- return GNUNET_SYSERR;
+ underscore_prefix++;
}
- if (prefix < last_underscore && last_underscore[-1] != '.')
+ if ('_' != underscore_prefix[0])
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_ (
- "Unable to parse SBOX record string `%s', the last label
does not start with an underscore\n"),
- prefix);
+ "Unable to parse SBOX record string `%s', the rightmost
label `%s' does not start with an underscore\n"),
+ prefix, underscore_prefix);
return GNUNET_SYSERR;
}
rest = snprintf (NULL, 0, "%s %u ", prefix, record_type);
@@ -389,7 +373,7 @@ gns_string_to_value (void *cls,
&bval,
&bval_size))
return GNUNET_SYSERR;
- prefix_size = strlen (prefix) + 1; // with NULL terminator
+ prefix_size = strlen (prefix) + 1;
*data_size = sizeof(struct GNUNET_GNSRECORD_SBoxRecord) + prefix_size
+ bval_size;
void *p = *data = box = GNUNET_malloc (*data_size);
diff --git a/src/service/gns/gnunet-service-gns_resolver.c
b/src/service/gns/gnunet-service-gns_resolver.c
index 906bb6aba..2d80f79d9 100644
--- a/src/service/gns/gnunet-service-gns_resolver.c
+++ b/src/service/gns/gnunet-service-gns_resolver.c
@@ -705,7 +705,6 @@ resolver_lookup_get_next_label (struct GNS_ResolverHandle
*rh)
proto_name = GNUNET_strndup (&dot[2],
rh->name_resolution_pos - (dot - rh->name)
- 2);
- rh->name_resolution_pos = 0;
protocol = resolver_getprotobyname (proto_name);
if (0 == protocol)
{
@@ -715,7 +714,8 @@ resolver_lookup_get_next_label (struct GNS_ResolverHandle
*rh)
proto_name);
GNUNET_free (proto_name);
GNUNET_free (srv_name);
- rh->prefix = GNUNET_strndup (rh->name, strlen (rh->name) - len - 1);
+ rh->prefix = GNUNET_strndup (rh->name, rh->name_resolution_pos);
+ rh->name_resolution_pos = 0;
return ret;
}
service = resolver_getservbyname (srv_name,
@@ -735,7 +735,8 @@ resolver_lookup_get_next_label (struct GNS_ResolverHandle
*rh)
srv_name);
GNUNET_free (proto_name);
GNUNET_free (srv_name);
- rh->prefix = GNUNET_strndup (rh->name, strlen (rh->name) - len - 1);
+ rh->prefix = GNUNET_strndup (rh->name, rh->name_resolution_pos);
+ rh->name_resolution_pos = 0;
return ret;
}
}
@@ -758,8 +759,8 @@ resolver_lookup_get_next_label (struct GNS_ResolverHandle
*rh)
rh->name_resolution_pos)) && '_' == dot[1]) ||
'_' == rh->name[0])
{
+ rh->prefix = GNUNET_strndup (rh->name, rh->name_resolution_pos);
rh->name_resolution_pos = 0;
- rh->prefix = GNUNET_strndup (rh->name, strlen (rh->name) - len - 1);
}
return ret;
}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [gnunet] branch master updated (b92af915f -> d07a2f30e),
gnunet <=