gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]