mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Check for NULL from tor_dup_ip()
This commit is contained in:
parent
ded99992b8
commit
a5d28bf88f
@ -192,7 +192,7 @@ resolve_my_address(int warn_severity, const or_options_t *options,
|
||||
tor_addr_from_ipv4h(&myaddr,addr);
|
||||
|
||||
addr_string = tor_dup_ip(addr);
|
||||
if (tor_addr_is_internal(&myaddr, 0)) {
|
||||
if (addr_string && tor_addr_is_internal(&myaddr, 0)) {
|
||||
/* make sure we're ok with publishing an internal IP */
|
||||
if (using_default_dir_authorities(options)) {
|
||||
/* if they are using the default authorities, disallow internal IPs
|
||||
|
@ -3459,6 +3459,7 @@ tell_controller_about_resolved_result(entry_connection_t *conn,
|
||||
expires = time(NULL) + ttl;
|
||||
if (answer_type == RESOLVED_TYPE_IPV4 && answer_len >= 4) {
|
||||
char *cp = tor_dup_ip(ntohl(get_uint32(answer)));
|
||||
if (cp)
|
||||
control_event_address_mapped(conn->socks_request->address,
|
||||
cp, expires, NULL, 0);
|
||||
tor_free(cp);
|
||||
|
@ -826,6 +826,11 @@ pathbias_send_usable_probe(circuit_t *circ)
|
||||
ocirc->pathbias_probe_nonce &= 0x00ffffff;
|
||||
probe_nonce = tor_dup_ip(ocirc->pathbias_probe_nonce);
|
||||
|
||||
if (!probe_nonce) {
|
||||
log_err(LD_BUG, "Failed to generate nonce");
|
||||
return -1;
|
||||
}
|
||||
|
||||
tor_snprintf(payload,RELAY_PAYLOAD_SIZE, "%s:25", probe_nonce);
|
||||
payload_len = (int)strlen(payload)+1;
|
||||
|
||||
|
@ -137,6 +137,7 @@ getinfo_helper_misc(control_connection_t *conn, const char *question,
|
||||
return -1;
|
||||
}
|
||||
*answer = tor_dup_ip(addr);
|
||||
tor_assert_nonfatal(*answer);
|
||||
} else if (!strcmp(question, "traffic/read")) {
|
||||
tor_asprintf(answer, "%"PRIu64, (get_bytes_read()));
|
||||
} else if (!strcmp(question, "traffic/written")) {
|
||||
|
@ -4501,6 +4501,11 @@ dirserv_generate_networkstatus_vote_obj(crypto_pk_t *private_key,
|
||||
hostname = tor_dup_ip(addr);
|
||||
}
|
||||
|
||||
if (!hostname) {
|
||||
log_err(LD_BUG, "Failed to determine hostname AND duplicate address");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (d_options->VersioningAuthoritativeDirectory) {
|
||||
client_versions =
|
||||
format_recommended_version_list(d_options->RecommendedClientVersions, 0);
|
||||
|
@ -464,11 +464,13 @@ trusted_dirs_load_certs_from_string(const char *contents, int source,
|
||||
(ds->addr != cert->addr ||
|
||||
ds->dir_port != cert->dir_port)) {
|
||||
char *a = tor_dup_ip(cert->addr);
|
||||
if (a) {
|
||||
log_notice(LD_DIR, "Updating address for directory authority %s "
|
||||
"from %s:%d to %s:%d based on certificate.",
|
||||
ds->nickname, ds->address, (int)ds->dir_port,
|
||||
a, cert->dir_port);
|
||||
tor_free(a);
|
||||
}
|
||||
ds->addr = cert->addr;
|
||||
ds->dir_port = cert->dir_port;
|
||||
}
|
||||
|
@ -358,6 +358,9 @@ trusted_dir_server_new(const char *nickname, const char *address,
|
||||
}
|
||||
if (!hostname)
|
||||
hostname = tor_dup_ip(a);
|
||||
|
||||
if (!hostname)
|
||||
return NULL;
|
||||
} else {
|
||||
if (tor_lookup_hostname(address, &a)) {
|
||||
log_warn(LD_CONFIG,
|
||||
|
@ -203,7 +203,9 @@ reachability_warnings_callback(time_t now, const or_options_t *options)
|
||||
const routerinfo_t *me = router_get_my_routerinfo();
|
||||
if (me && !check_whether_orport_reachable(options)) {
|
||||
char *address = tor_dup_ip(me->addr);
|
||||
log_warn(LD_CONFIG,"Your server (%s:%d) has not managed to confirm that "
|
||||
if (address) {
|
||||
log_warn(LD_CONFIG,
|
||||
"Your server (%s:%d) has not managed to confirm that "
|
||||
"its ORPort is reachable. Relays do not publish descriptors "
|
||||
"until their ORPort and DirPort are reachable. Please check "
|
||||
"your firewalls, ports, address, /etc/hosts file, etc.",
|
||||
@ -213,9 +215,11 @@ reachability_warnings_callback(time_t now, const or_options_t *options)
|
||||
address, me->or_port);
|
||||
tor_free(address);
|
||||
}
|
||||
}
|
||||
|
||||
if (me && !check_whether_dirport_reachable(options)) {
|
||||
char *address = tor_dup_ip(me->addr);
|
||||
if (address) {
|
||||
log_warn(LD_CONFIG,
|
||||
"Your server (%s:%d) has not managed to confirm that its "
|
||||
"DirPort is reachable. Relays do not publish descriptors "
|
||||
@ -228,6 +232,7 @@ reachability_warnings_callback(time_t now, const or_options_t *options)
|
||||
tor_free(address);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT;
|
||||
}
|
||||
|
@ -2784,6 +2784,9 @@ router_dump_router_to_string(routerinfo_t *router,
|
||||
}
|
||||
|
||||
address = tor_dup_ip(router->addr);
|
||||
if (!address)
|
||||
goto err;
|
||||
|
||||
chunks = smartlist_new();
|
||||
|
||||
/* Generate the easy portion of the router descriptor. */
|
||||
|
@ -224,7 +224,11 @@ inform_testing_reachability(void)
|
||||
const routerinfo_t *me = router_get_my_routerinfo();
|
||||
if (!me)
|
||||
return 0;
|
||||
|
||||
address = tor_dup_ip(me->addr);
|
||||
if (!address)
|
||||
return 0;
|
||||
|
||||
control_event_server_status(LOG_NOTICE,
|
||||
"CHECKING_REACHABILITY ORADDRESS=%s:%d",
|
||||
address, me->or_port);
|
||||
@ -255,6 +259,10 @@ router_orport_found_reachable(void)
|
||||
const or_options_t *options = get_options();
|
||||
if (!can_reach_or_port && me) {
|
||||
char *address = tor_dup_ip(me->addr);
|
||||
|
||||
if (!address)
|
||||
return;
|
||||
|
||||
log_notice(LD_OR,"Self-testing indicates your ORPort is reachable from "
|
||||
"the outside. Excellent.%s",
|
||||
options->PublishServerDescriptor_ != NO_DIRINFO
|
||||
@ -282,6 +290,10 @@ router_dirport_found_reachable(void)
|
||||
const or_options_t *options = get_options();
|
||||
if (!can_reach_dir_port && me) {
|
||||
char *address = tor_dup_ip(me->addr);
|
||||
|
||||
if (!address)
|
||||
return;
|
||||
|
||||
log_notice(LD_DIRSERV,"Self-testing indicates your DirPort is reachable "
|
||||
"from the outside. Excellent.%s",
|
||||
options->PublishServerDescriptor_ != NO_DIRINFO
|
||||
|
@ -3715,6 +3715,7 @@ directory_post_to_hs_dir(rend_service_descriptor_t *renddesc,
|
||||
base32_encode(desc_id_base32, sizeof(desc_id_base32),
|
||||
desc->desc_id, DIGEST_LEN);
|
||||
hs_dir_ip = tor_dup_ip(hs_dir->addr);
|
||||
if (hs_dir_ip) {
|
||||
log_info(LD_REND, "Launching upload for v2 descriptor for "
|
||||
"service '%s' with descriptor ID '%s' with validity "
|
||||
"of %d seconds to hidden service directory '%s' on "
|
||||
@ -3725,10 +3726,12 @@ directory_post_to_hs_dir(rend_service_descriptor_t *renddesc,
|
||||
hs_dir->nickname,
|
||||
hs_dir_ip,
|
||||
hs_dir->or_port);
|
||||
tor_free(hs_dir_ip);
|
||||
}
|
||||
|
||||
control_event_hs_descriptor_upload(service_id,
|
||||
hs_dir->identity_digest,
|
||||
desc_id_base32, NULL);
|
||||
tor_free(hs_dir_ip);
|
||||
/* Remember successful upload to this router for next time. */
|
||||
if (!smartlist_contains_digest(successful_uploads,
|
||||
hs_dir->identity_digest))
|
||||
|
Loading…
Reference in New Issue
Block a user