Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ZerXes
Tor
Commits
cef91064
Commit
cef91064
authored
Jan 11, 2019
by
Nick Mathewson
🐕
Browse files
Merge branch 'bug28989_squashed'
parents
df1a8a65
b69d28ae
Changes
2
Hide whitespace changes
Inline
Side-by-side
changes/bug28989
0 → 100644
View file @
cef91064
o Minor bugfixes (unit tests):
- Instead of relying on hs_free_all() to clean up all onion service
objects we created in test_build_descriptors(), deallocate
them one by one. This lets Coverity know that we are not leaking memory
here and fixes CID 1442277. Fixes bug 28989; bugfix on 0.3.5.1-alpha.
src/test/test_hs_service.c
View file @
cef91064
...
...
@@ -267,7 +267,7 @@ helper_clone_authorized_client(const hs_service_authorized_client_t *client)
/* Helper: Return a newly allocated service object with the identity keypair
* sets and the current descriptor. Then register it to the global map.
* Caller should us hs_free_all() to free this service or remove it from the
* Caller should us
e
hs_free_all() to free this service or remove it from the
* global map before freeing. */
static
hs_service_t
*
helper_create_service
(
void
)
...
...
@@ -289,6 +289,20 @@ helper_create_service(void)
return
service
;
}
/* Helper: Deallocate a given service object, its child objects and
* remove it from onion service map.
* */
static
void
helper_destroy_service
(
hs_service_t
*
service
)
{
if
(
!
service
)
return
;
remove_service
(
get_hs_service_map
(),
service
);
hs_service_free
(
service
);
}
/* Helper: Return a newly allocated service object with clients. */
static
hs_service_t
*
helper_create_service_with_clients
(
int
num_clients
)
...
...
@@ -1626,6 +1640,7 @@ test_build_descriptors(void *arg)
{
int
ret
;
time_t
now
=
time
(
NULL
);
hs_service_t
*
last_service
=
NULL
;
(
void
)
arg
;
...
...
@@ -1650,6 +1665,7 @@ test_build_descriptors(void *arg)
* is disabled. */
{
hs_service_t
*
service
=
helper_create_service
();
last_service
=
service
;
service_descriptor_free
(
service
->
desc_current
);
service
->
desc_current
=
NULL
;
...
...
@@ -1660,12 +1676,16 @@ test_build_descriptors(void *arg)
hs_desc_superencrypted_data_t
*
superencrypted
;
superencrypted
=
&
service
->
desc_current
->
desc
->
superencrypted_data
;
tt_int_op
(
smartlist_len
(
superencrypted
->
clients
),
OP_EQ
,
16
);
helper_destroy_service
(
service
);
last_service
=
NULL
;
}
/* Generate a valid number of fake auth clients when the number of
* clients is zero. */
{
hs_service_t
*
service
=
helper_create_service_with_clients
(
0
);
last_service
=
service
;
service_descriptor_free
(
service
->
desc_current
);
service
->
desc_current
=
NULL
;
...
...
@@ -1673,12 +1693,16 @@ test_build_descriptors(void *arg)
hs_desc_superencrypted_data_t
*
superencrypted
;
superencrypted
=
&
service
->
desc_current
->
desc
->
superencrypted_data
;
tt_int_op
(
smartlist_len
(
superencrypted
->
clients
),
OP_EQ
,
16
);
helper_destroy_service
(
service
);
last_service
=
NULL
;
}
/* Generate a valid number of fake auth clients when the number of
* clients is not a multiple of 16. */
{
hs_service_t
*
service
=
helper_create_service_with_clients
(
20
);
last_service
=
service
;
service_descriptor_free
(
service
->
desc_current
);
service
->
desc_current
=
NULL
;
...
...
@@ -1686,12 +1710,16 @@ test_build_descriptors(void *arg)
hs_desc_superencrypted_data_t
*
superencrypted
;
superencrypted
=
&
service
->
desc_current
->
desc
->
superencrypted_data
;
tt_int_op
(
smartlist_len
(
superencrypted
->
clients
),
OP_EQ
,
32
);
helper_destroy_service
(
service
);
last_service
=
NULL
;
}
/* Do not generate any fake desc client when the number of clients is
* a multiple of 16 but not zero. */
{
hs_service_t
*
service
=
helper_create_service_with_clients
(
32
);
last_service
=
service
;
service_descriptor_free
(
service
->
desc_current
);
service
->
desc_current
=
NULL
;
...
...
@@ -1699,9 +1727,13 @@ test_build_descriptors(void *arg)
hs_desc_superencrypted_data_t
*
superencrypted
;
superencrypted
=
&
service
->
desc_current
->
desc
->
superencrypted_data
;
tt_int_op
(
smartlist_len
(
superencrypted
->
clients
),
OP_EQ
,
32
);
helper_destroy_service
(
service
);
last_service
=
NULL
;
}
done:
helper_destroy_service
(
last_service
);
hs_free_all
();
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment