commit d4f1b566e14941245f101f443a073ca11aa64425 Author: George Kadianakis desnacked@riseup.net Date: Mon Aug 28 16:30:39 2017 +0300
prop224: Add test that exposes the #23343 bug. --- src/test/test_hs_common.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/src/test/test_hs_common.c b/src/test/test_hs_common.c index b1e47adf2..b9215ea18 100644 --- a/src/test/test_hs_common.c +++ b/src/test/test_hs_common.c @@ -703,13 +703,14 @@ test_hid_serv_request_tracker(void *arg) { (void) arg; time_t retval; - routerstatus_t *hsdir = NULL, *hsdir2 = NULL; + routerstatus_t *hsdir = NULL, *hsdir2 = NULL, *hsdir3 = NULL; time_t now = approx_time();
const char *req_key_str_first = "vd4zb6zesaubtrjvdqcr2w7x7lhw2up4Xnw4526ThUNbL5o1go+EdUuEqlKxHkNbnK41pRzizzs"; const char *req_key_str_second = "g53o7iavcd62oihswhr24u6czmqws5kpXnw4526ThUNbL5o1go+EdUuEqlKxHkNbnK41pRzizzs"; + const char *req_key_str_small = "ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ";
/*************************** basic test *******************************/
@@ -741,7 +742,7 @@ test_hid_serv_request_tracker(void *arg)
/* Let's add another request for the same HS but on a different HSDir. */ hsdir2 = tor_malloc_zero(sizeof(routerstatus_t)); - memset(hsdir->identity_digest, 2, DIGEST_LEN); + memset(hsdir2->identity_digest, 2, DIGEST_LEN); retval = hs_lookup_last_hid_serv_request(hsdir2, req_key_str_first, now+3, 1); tt_int_op(retval, OP_EQ, now+3); @@ -755,16 +756,25 @@ test_hid_serv_request_tracker(void *arg) now+2, 0); tt_int_op(retval, OP_EQ, 0);
+ /* Now let's add a smaller req key str */ + hsdir3 = tor_malloc_zero(sizeof(routerstatus_t)); + memset(hsdir3->identity_digest, 3, DIGEST_LEN); + retval = hs_lookup_last_hid_serv_request(hsdir3, req_key_str_small, + now+4, 1); + tt_int_op(retval, OP_EQ, now+4); + tt_int_op(strmap_size(request_tracker),OP_EQ, 2); + /*************************** deleting entries **************************/
/* Add another request with very short key */ retval = hs_lookup_last_hid_serv_request(hsdir, "l", now, 1); + tt_int_op(strmap_size(request_tracker),OP_EQ, 3);
/* Try deleting entries with a dummy key. Check that our previous requests * are still there */ tor_capture_bugs_(1); hs_purge_hid_serv_from_last_hid_serv_requests("a"); - tt_int_op(strmap_size(request_tracker),OP_EQ, 2); + tt_int_op(strmap_size(request_tracker),OP_EQ, 3); tor_end_capture_bugs_();
/* Try another dummy key. Check that requests are still there */ @@ -773,16 +783,16 @@ test_hid_serv_request_tracker(void *arg) memset(dummy, 'Z', 2000); dummy[1999] = '\x00'; hs_purge_hid_serv_from_last_hid_serv_requests(dummy); - tt_int_op(strmap_size(request_tracker),OP_EQ, 2); + tt_int_op(strmap_size(request_tracker),OP_EQ, 3); }
/* Another dummy key! */ hs_purge_hid_serv_from_last_hid_serv_requests(req_key_str_second); - tt_int_op(strmap_size(request_tracker),OP_EQ, 2); + tt_int_op(strmap_size(request_tracker),OP_EQ, 3);
/* Now actually delete a request! */ hs_purge_hid_serv_from_last_hid_serv_requests(req_key_str_first); - tt_int_op(strmap_size(request_tracker),OP_EQ, 1); + tt_int_op(strmap_size(request_tracker),OP_EQ, 2);
/* Purge it all! */ hs_purge_last_hid_serv_requests(); @@ -792,6 +802,7 @@ test_hid_serv_request_tracker(void *arg) done: tor_free(hsdir); tor_free(hsdir2); + tor_free(hsdir3); }
static void