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
53bdd211
Commit
53bdd211
authored
Dec 02, 2019
by
George Kadianakis
Browse files
Merge branch 'tor-github/pr/1559'
parents
a58a9572
75f417fd
Changes
2
Hide whitespace changes
Inline
Side-by-side
changes/ticket29826
0 → 100644
View file @
53bdd211
o Code simplification and refactoring:
- Replace some confusing identifiers in process_descs.c.
Closes ticket 29826.
src/feature/dirauth/process_descs.c
View file @
53bdd211
...
...
@@ -53,24 +53,24 @@ dirserv_get_status_impl(const char *fp, const char *nickname,
int
severity
);
/* 1 Historically used to indicate Named */
#define
FP
_INVALID 2
/**< Believed invalid. */
#define
FP
_REJECT 4
/**< We will not publish this router. */
#define
RTR
_INVALID 2
/**< Believed invalid. */
#define
RTR
_REJECT 4
/**< We will not publish this router. */
/* 8 Historically used to avoid using this as a dir. */
#define
FP
_BADEXIT 16
/**< We'll tell clients not to use this as an exit. */
#define
RTR
_BADEXIT 16
/**< We'll tell clients not to use this as an exit. */
/* 32 Historically used to indicade Unnamed */
/** Target of status_by_digest map. */
typedef
uint32_t
r
outer_statu
s_t
;
typedef
uint32_t
r
tr_flag
s_t
;
static
void
add_fingerprint_to_dir
(
const
char
*
fp
,
struct
authdir_config_t
*
list
,
r
outer_statu
s_t
add_status
);
r
tr_flag
s_t
add_status
);
/** List of nickname-\>identity fingerprint mappings for all the routers
* that we name. Used to prevent router impersonation. */
typedef
struct
authdir_config_t
{
strmap_t
*
fp_by_name
;
/**< Map from lc nickname to fingerprint. */
digestmap_t
*
status_by_digest
;
/**< Map from digest to r
outer_statu
s_t. */
digestmap_t
*
status_by_digest
;
/**< Map from digest to r
tr_flag
s_t. */
}
authdir_config_t
;
/** Should be static; exposed for testing. */
...
...
@@ -92,11 +92,11 @@ authdir_config_new(void)
*/
/* static */
void
add_fingerprint_to_dir
(
const
char
*
fp
,
authdir_config_t
*
list
,
r
outer_statu
s_t
add_status
)
r
tr_flag
s_t
add_status
)
{
char
*
fingerprint
;
char
d
[
DIGEST_LEN
];
r
outer_statu
s_t
*
status
;
r
tr_flag
s_t
*
status
;
tor_assert
(
fp
);
tor_assert
(
list
);
...
...
@@ -112,7 +112,7 @@ add_fingerprint_to_dir(const char *fp, authdir_config_t *list,
status
=
digestmap_get
(
list
->
status_by_digest
,
d
);
if
(
!
status
)
{
status
=
tor_malloc_zero
(
sizeof
(
r
outer_statu
s_t
));
status
=
tor_malloc_zero
(
sizeof
(
r
tr_flag
s_t
));
digestmap_set
(
list
->
status_by_digest
,
d
,
status
);
}
...
...
@@ -175,7 +175,7 @@ dirserv_load_fingerprint_file(void)
for
(
list
=
front
;
list
;
list
=
list
->
next
)
{
char
digest_tmp
[
DIGEST_LEN
];
r
outer_statu
s_t
add_status
=
0
;
r
tr_flag
s_t
add_status
=
0
;
nickname
=
list
->
key
;
fingerprint
=
list
->
value
;
tor_strstrip
(
fingerprint
,
" "
);
/* remove spaces */
if
(
strlen
(
fingerprint
)
!=
HEX_DIGEST_LEN
||
...
...
@@ -188,11 +188,11 @@ dirserv_load_fingerprint_file(void)
continue
;
}
if
(
!
strcasecmp
(
nickname
,
"!reject"
))
{
add_status
=
FP
_REJECT
;
add_status
=
RTR
_REJECT
;
}
else
if
(
!
strcasecmp
(
nickname
,
"!badexit"
))
{
add_status
=
FP
_BADEXIT
;
add_status
=
RTR
_BADEXIT
;
}
else
if
(
!
strcasecmp
(
nickname
,
"!invalid"
))
{
add_status
=
FP
_INVALID
;
add_status
=
RTR
_INVALID
;
}
add_fingerprint_to_dir
(
fingerprint
,
fingerprint_list_new
,
add_status
);
}
...
...
@@ -225,7 +225,7 @@ dirserv_load_fingerprint_file(void)
*
* Return the appropriate router status.
*
* If the status is '
FP
_REJECT' and <b>msg</b> is provided, set
* If the status is '
RTR
_REJECT' and <b>msg</b> is provided, set
* *<b>msg</b> to an explanation of why. */
uint32_t
dirserv_router_get_status
(
const
routerinfo_t
*
router
,
const
char
**
msg
,
...
...
@@ -238,7 +238,7 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
log_warn
(
LD_BUG
,
"Error computing fingerprint"
);
if
(
msg
)
*
msg
=
"Bug: Error computing fingerprint"
;
return
FP
_REJECT
;
return
RTR
_REJECT
;
}
/* Check for the more common reasons to reject a router first. */
...
...
@@ -259,7 +259,7 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
"key."
,
router_describe
(
router
));
if
(
msg
)
*
msg
=
"Missing ntor curve25519 onion key. Please upgrade!"
;
return
FP
_REJECT
;
return
RTR
_REJECT
;
}
if
(
router
->
cache_info
.
signing_key_cert
)
{
...
...
@@ -275,7 +275,7 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
if
(
msg
)
{
*
msg
=
"Ed25519 identity key or RSA identity key has changed."
;
}
return
FP
_REJECT
;
return
RTR
_REJECT
;
}
}
}
else
{
...
...
@@ -292,7 +292,7 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
if
(
msg
)
{
*
msg
=
"Ed25519 identity key has disappeared."
;
}
return
FP
_REJECT
;
return
RTR
_REJECT
;
}
#endif
/* defined(DISABLE_DISABLING_ED25519) */
}
...
...
@@ -312,7 +312,7 @@ dirserv_would_reject_router(const routerstatus_t *rs)
rs
->
addr
,
rs
->
or_port
,
NULL
,
NULL
,
LOG_DEBUG
);
return
(
res
&
FP
_REJECT
)
!=
0
;
return
(
res
&
RTR
_REJECT
)
!=
0
;
}
/**
...
...
@@ -369,7 +369,7 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname,
const
char
*
platform
,
const
char
**
msg
,
int
severity
)
{
uint32_t
result
=
0
;
r
outer_statu
s_t
*
status_by_digest
;
r
tr_flag
s_t
*
status_by_digest
;
if
(
!
fingerprint_list
)
fingerprint_list
=
authdir_config_new
();
...
...
@@ -384,13 +384,13 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname,
if
(
msg
)
{
*
msg
=
"Malformed platform string."
;
}
return
FP
_REJECT
;
return
RTR
_REJECT
;
}
}
/* Check whether the version is obsolete, broken, insecure, etc... */
if
(
platform
&&
dirserv_rejects_tor_version
(
platform
,
msg
))
{
return
FP
_REJECT
;
return
RTR
_REJECT
;
}
status_by_digest
=
digestmap_get
(
fingerprint_list
->
status_by_digest
,
...
...
@@ -398,14 +398,14 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname,
if
(
status_by_digest
)
result
|=
*
status_by_digest
;
if
(
result
&
FP
_REJECT
)
{
if
(
result
&
RTR
_REJECT
)
{
if
(
msg
)
*
msg
=
"Fingerprint is marked rejected -- if you think this is a "
"mistake please set a valid email address in ContactInfo and "
"send an email to bad-relays@lists.torproject.org mentioning "
"your fingerprint(s)?"
;
return
FP
_REJECT
;
}
else
if
(
result
&
FP
_INVALID
)
{
return
RTR
_REJECT
;
}
else
if
(
result
&
RTR
_INVALID
)
{
if
(
msg
)
*
msg
=
"Fingerprint is marked invalid"
;
}
...
...
@@ -414,7 +414,7 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname,
log_fn
(
severity
,
LD_DIRSERV
,
"Marking '%s' as bad exit because of address '%s'"
,
nickname
,
fmt_addr32
(
addr
));
result
|=
FP
_BADEXIT
;
result
|=
RTR
_BADEXIT
;
}
if
(
!
authdir_policy_permits_address
(
addr
,
or_port
))
{
...
...
@@ -425,13 +425,13 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname,
"mistake please set a valid email address in ContactInfo and "
"send an email to bad-relays@lists.torproject.org mentioning "
"your address(es) and fingerprint(s)?"
;
return
FP
_REJECT
;
return
RTR
_REJECT
;
}
if
(
!
authdir_policy_valid_address
(
addr
,
or_port
))
{
log_fn
(
severity
,
LD_DIRSERV
,
"Not marking '%s' valid because of address '%s'"
,
nickname
,
fmt_addr32
(
addr
));
result
|=
FP
_INVALID
;
result
|=
RTR
_INVALID
;
}
return
result
;
...
...
@@ -501,7 +501,7 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
int
severity
=
(
complain
&&
ri
->
contact_info
)
?
LOG_NOTICE
:
LOG_INFO
;
uint32_t
status
=
dirserv_router_get_status
(
ri
,
msg
,
severity
);
tor_assert
(
msg
);
if
(
status
&
FP
_REJECT
)
if
(
status
&
RTR
_REJECT
)
return
-
1
;
/* msg is already set. */
/* Is there too much clock skew? */
...
...
@@ -537,7 +537,7 @@ authdir_wants_to_reject_router(routerinfo_t *ri, const char **msg,
return
-
1
;
}
*
valid_out
=
!
(
status
&
FP
_INVALID
);
*
valid_out
=
!
(
status
&
RTR
_INVALID
);
return
0
;
}
...
...
@@ -549,8 +549,8 @@ void
dirserv_set_node_flags_from_authoritative_status
(
node_t
*
node
,
uint32_t
authstatus
)
{
node
->
is_valid
=
(
authstatus
&
FP
_INVALID
)
?
0
:
1
;
node
->
is_bad_exit
=
(
authstatus
&
FP
_BADEXIT
)
?
1
:
0
;
node
->
is_valid
=
(
authstatus
&
RTR
_INVALID
)
?
0
:
1
;
node
->
is_bad_exit
=
(
authstatus
&
RTR
_BADEXIT
)
?
1
:
0
;
}
/** True iff <b>a</b> is more severe than <b>b</b>. */
...
...
@@ -864,21 +864,21 @@ directory_remove_invalid(void)
continue
;
r
=
dirserv_router_get_status
(
ent
,
&
msg
,
LOG_INFO
);
description
=
router_describe
(
ent
);
if
(
r
&
FP
_REJECT
)
{
if
(
r
&
RTR
_REJECT
)
{
log_info
(
LD_DIRSERV
,
"Router %s is now rejected: %s"
,
description
,
msg
?
msg
:
""
);
routerlist_remove
(
rl
,
ent
,
0
,
time
(
NULL
));
continue
;
}
if
(
bool_neq
((
r
&
FP
_INVALID
),
!
node
->
is_valid
))
{
if
(
bool_neq
((
r
&
RTR
_INVALID
),
!
node
->
is_valid
))
{
log_info
(
LD_DIRSERV
,
"Router '%s' is now %svalid."
,
description
,
(
r
&
FP
_INVALID
)
?
"in"
:
""
);
node
->
is_valid
=
(
r
&
FP
_INVALID
)
?
0
:
1
;
(
r
&
RTR
_INVALID
)
?
"in"
:
""
);
node
->
is_valid
=
(
r
&
RTR
_INVALID
)
?
0
:
1
;
}
if
(
bool_neq
((
r
&
FP
_BADEXIT
),
node
->
is_bad_exit
))
{
if
(
bool_neq
((
r
&
RTR
_BADEXIT
),
node
->
is_bad_exit
))
{
log_info
(
LD_DIRSERV
,
"Router '%s' is now a %s exit"
,
description
,
(
r
&
FP
_BADEXIT
)
?
"bad"
:
"good"
);
node
->
is_bad_exit
=
(
r
&
FP
_BADEXIT
)
?
1
:
0
;
(
r
&
RTR
_BADEXIT
)
?
"bad"
:
"good"
);
node
->
is_bad_exit
=
(
r
&
RTR
_BADEXIT
)
?
1
:
0
;
}
}
SMARTLIST_FOREACH_END
(
node
);
...
...
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