[tor-commits] [tor/master] Extra tests for tor_memeq and memcmp

nickm at torproject.org nickm at torproject.org
Thu Sep 11 04:15:43 UTC 2014


commit 5126bc2ebd9ae67449e3c4f18828acb895d86308
Author: Nick Mathewson <nickm at torproject.org>
Date:   Wed Sep 10 23:58:02 2014 -0400

    Extra tests for tor_memeq and memcmp
    
    (Patch from teor; part of 13104)
---
 src/test/test_util.c |   19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/test/test_util.c b/src/test/test_util.c
index 16a2927..f091fc9 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -3251,6 +3251,25 @@ test_util_di_ops(void)
     test_eq(neq1, !eq1);
   }
 
+  /* exhaustively white-box test tor_memeq
+   * against each possible (single-byte) bit difference
+   * some arithmetic bugs only appear with certain bit patterns */
+  const uint8_t z = 0;
+  uint8_t ii = 0;
+  for (i = 0; i < 256; i++) {
+    ii = (uint8_t)i;
+    test_eq(tor_memeq(&z, &ii, 1), z == ii);
+  }
+
+  /* exhaustively white-box test tor_memcmp
+   * against each possible single-byte numeric difference
+   * some arithmetic bugs only appear with certain bit patterns */
+  for (i = 0; i < 256; i++) {
+    ii = (uint8_t)i;
+    test_eq(tor_memcmp(&z, &ii, 1) > 0 ? GT : EQ, z > ii ? GT : EQ);
+    test_eq(tor_memcmp(&ii, &z, 1) < 0 ? LT : EQ, ii < z ? LT : EQ);
+  }
+
   tt_int_op(1, ==, safe_mem_is_zero("", 0));
   tt_int_op(1, ==, safe_mem_is_zero("", 1));
   tt_int_op(0, ==, safe_mem_is_zero("a", 1));





More information about the tor-commits mailing list