chiark / gitweb /
server/bulkcrypto.c: Fix segfault in `aead' algorithm setup.
authorMark Wooding <mdw@distorted.org.uk>
Sun, 22 Sep 2019 09:24:31 +0000 (10:24 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sun, 22 Sep 2019 14:00:40 +0000 (15:00 +0100)
I think I must have completely failed to test this prior to release.
Brown paper bag time.  Add a new keyring to test this sort-of properly.

server/bulkcrypto.c
server/tests.at
t/Makefile.am
t/keyring-gamma [new file with mode: 0644]

index 6b175ddd3d7c5926c06246d3a1640f302b1bb203..9af4bb8ce063ac0fb4d2b77f6ab257638a4e68ef 100644 (file)
@@ -889,11 +889,10 @@ static bulkalgs *aead_getalgs(const algswitch *asw, dstr *e,
   p = key_getattr(kf, k, "tagsz");
   if (!p) {
     p = key_getattr(kf, k, "mac");
-    if (strncmp(p, "aead", 4) != 0 || (p[4] && p[4] != '/')) {
-      a_format(e, "unknown-mac", "%s", p, A_END);
-      goto fail;
-    }
-    if (p[4] == '/') p += 5;
+    if (!p) ;
+    else if (strncmp(p, "aead", 4) != 0 || (p[4] && p[4] != '/'))
+      { a_format(e, "unknown-mac", "%s", p, A_END); goto fail; }
+    else if (p[4] == '/') p += 5;
     else p = 0;
   }
   if (!p)
index 08bfb135cd3219fb5bf2faebd2b9ce04c735aadd..3fd2e47bb4d897f67bbf7a9e9818fc61472928bd 100644 (file)
@@ -758,7 +758,7 @@ AT_SETUP([server knock])
 AT_KEYWORDS([knock])
 export TRIPE_SLIPIF=USLIP
 
-for i in alice bob; do (mkdir $i; cd $i; SETUPDIR([alpha])); done
+for i in alice bob; do (mkdir $i; cd $i; SETUPDIR([gamma])); done
 
 WITH_2TRIPES([alice], [bob], [-nslip], [-talice], [-tbob], [
   WITH_MITM([alice], [5311], [bob], [5312], [
index 75752e3e8943e6dbf92e6707886527eceb56683c..c5304024e787b891536bc699437012024d4be927 100644 (file)
@@ -39,6 +39,8 @@ autotest_TESTS                += $(top_srcdir)/keys/tests.at
 ### Test files.
 
 ## Keyring files.
-EXTRA_DIST             += keyring-alpha keyring-beta keyring-beta-new
+EXTRA_DIST             += keyring-alpha
+EXTRA_DIST             += keyring-beta keyring-beta-new
+EXTRA_DIST             += keyring-gamma
 
 ###----- That's all, folks --------------------------------------------------
diff --git a/t/keyring-gamma b/t/keyring-gamma
new file mode 100644 (file)
index 0000000..8121094
--- /dev/null
@@ -0,0 +1,4 @@
+ad1a94b3:tripe-param:param string,shared:%2e forever forever kx-group=x448&cipher=twofish-ocb3&bulk=aead
+5a4c1e54:tripe:carol struct:[pub=binary,public:N3xC4xLieyQ5p758JjKuhEwAYr4Nq98H2kFWtI6OLk13b7NJmSi4GW3aHGfYdKGhcxR+rpHwVm0=,private=struct:[priv=binary,private,burn:rlXbkcoD7+iqckBj1MAXkSjoU4b6wOQq+xjQda1kD3m5/MTVDm/dFFPLtGdANGtDkiDwVFO/DBs=]] forever forever kx-group=x448&cipher=twofish-ocb3&bulk=aead
+69941be8:tripe:alice struct:[pub=binary,public:1pQP3OAelcLeFY5GHD5k9NBI7Y7a8t5N/LuY0VEd3rKBKBpX08zMMBtp3Okdveqfjgp7tzRHVY4=,private=struct:[priv=binary,private,burn:kYKn5Qskt1B4JKvAY48mP5i+l/HiRuQQwFL8p6oeZXd3gYCWRUJRHFieuA5sCU6fuzst+3DHAc0=]] forever forever kx-group=x448&cipher=twofish-ocb3&bulk=aead
+a8e18348:tripe:bob struct:[pub=binary,public:krXa8TLVt7496UeDHm30NaNuNKxTrAnt2PvLZ5DjzcI16cbjS5WGdDd2jsycfnr7+5CylvsUlkE=,private=struct:[priv=binary,private,burn:XAN4vEA4zC6K9OgeidUwAQIOEcq+YxNo59NlxKJlEb14dAAy6RPmaBobDxaeNuxplKvazq728ZU=]] forever forever kx-group=x448&cipher=twofish-ocb3&bulk=aead