|
@@ -807,12 +807,46 @@ test_md_reject_cache(void *arg)
|
|
|
tor_free(mock_ns_val);
|
|
|
}
|
|
|
|
|
|
+static void
|
|
|
+test_md_corrupt_desc(void *arg)
|
|
|
+{
|
|
|
+ char *cp = NULL;
|
|
|
+ smartlist_t *sl = NULL;
|
|
|
+ (void) arg;
|
|
|
+
|
|
|
+ sl = microdescs_add_to_cache(get_microdesc_cache(),
|
|
|
+ "@last-listed 2015-06-22 10:00:00\n"
|
|
|
+ "onion-k\n",
|
|
|
+ NULL, SAVED_IN_JOURNAL, 0, time(NULL), NULL);
|
|
|
+ tt_int_op(smartlist_len(sl), ==, 0);
|
|
|
+ smartlist_free(sl);
|
|
|
+
|
|
|
+ sl = microdescs_add_to_cache(get_microdesc_cache(),
|
|
|
+ "@last-listed 2015-06-22 10:00:00\n"
|
|
|
+ "wiggly\n",
|
|
|
+ NULL, SAVED_IN_JOURNAL, 0, time(NULL), NULL);
|
|
|
+ tt_int_op(smartlist_len(sl), ==, 0);
|
|
|
+ smartlist_free(sl);
|
|
|
+
|
|
|
+ tor_asprintf(&cp, "%s\n%s", test_md1, "@foobar\nonion-wobble\n");
|
|
|
+
|
|
|
+ sl = microdescs_add_to_cache(get_microdesc_cache(),
|
|
|
+ cp, cp+strlen(cp),
|
|
|
+ SAVED_IN_JOURNAL, 0, time(NULL), NULL);
|
|
|
+ tt_int_op(smartlist_len(sl), ==, 0);
|
|
|
+ smartlist_free(sl);
|
|
|
+
|
|
|
+ done:
|
|
|
+ tor_free(cp);
|
|
|
+}
|
|
|
+
|
|
|
struct testcase_t microdesc_tests[] = {
|
|
|
{ "cache", test_md_cache, TT_FORK, NULL, NULL },
|
|
|
{ "broken_cache", test_md_cache_broken, TT_FORK, NULL, NULL },
|
|
|
{ "generate", test_md_generate, 0, NULL, NULL },
|
|
|
{ "parse", test_md_parse, 0, NULL, NULL },
|
|
|
{ "reject_cache", test_md_reject_cache, TT_FORK, NULL, NULL },
|
|
|
+ { "corrupt_desc", test_md_corrupt_desc, TT_FORK, NULL, NULL },
|
|
|
END_OF_TESTCASES
|
|
|
};
|
|
|
|