mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
Fix a potential memory stomp on servers running hidden services. Found by weasel with valgrind. Backport candidate.
svn:r5579
This commit is contained in:
parent
86d69218ef
commit
4f38670328
@ -56,7 +56,8 @@ rend_encode_service_descriptor(rend_service_descriptor_t *desc,
|
|||||||
char *end;
|
char *end;
|
||||||
int i;
|
int i;
|
||||||
size_t asn1len;
|
size_t asn1len;
|
||||||
cp = *str_out = tor_malloc(PK_BYTES*2*(desc->n_intro_points+2)); /*Too long, but ok*/
|
size_t buflen = PK_BYTES*2*(desc->n_intro_points+2);/*Too long, but ok*/
|
||||||
|
cp = *str_out = tor_malloc(buflen);
|
||||||
end = cp + PK_BYTES*2*(desc->n_intro_points+1);
|
end = cp + PK_BYTES*2*(desc->n_intro_points+1);
|
||||||
if (version) {
|
if (version) {
|
||||||
*(uint8_t*)cp = (uint8_t)0xff;
|
*(uint8_t*)cp = (uint8_t)0xff;
|
||||||
@ -77,7 +78,7 @@ rend_encode_service_descriptor(rend_service_descriptor_t *desc,
|
|||||||
if (version == 0) {
|
if (version == 0) {
|
||||||
for (i=0; i < desc->n_intro_points; ++i) {
|
for (i=0; i < desc->n_intro_points; ++i) {
|
||||||
char *ipoint = (char*)desc->intro_points[i];
|
char *ipoint = (char*)desc->intro_points[i];
|
||||||
strlcpy(cp, ipoint, *len_out-(cp-*str_out));
|
strlcpy(cp, ipoint, buflen-(cp-*str_out));
|
||||||
cp += strlen(ipoint)+1;
|
cp += strlen(ipoint)+1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user