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
Mike Perry
Tor
Commits
86980cf6
Commit
86980cf6
authored
Aug 18, 2004
by
Nick Mathewson
⛰
Browse files
Functions to test nickname validity
svn:r2269
parent
adccf3ae
Changes
6
Hide whitespace changes
Inline
Side-by-side
src/common/util.h
View file @
86980cf6
...
...
@@ -81,6 +81,8 @@ struct timeval {
#define CONFIG_LEGAL_FILENAME_CHARACTERS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_/ "
#endif
#define HEX_CHARACTERS "0123456789ABCDEFabcdef"
size_t
strlcat
(
char
*
dst
,
const
char
*
src
,
size_t
siz
);
size_t
strlcpy
(
char
*
dst
,
const
char
*
src
,
size_t
siz
);
...
...
src/or/config.c
View file @
86980cf6
...
...
@@ -735,6 +735,10 @@ int getconfig(int argc, char **argv, or_options_t *options) {
log_fn
(
LOG_WARN
,
"Nickname '%s' contains illegal characters."
,
options
->
Nickname
);
result
=
-
1
;
}
if
(
strlen
(
options
->
Nickname
)
==
0
)
{
log_fn
(
LOG_WARN
,
"Nickname must have at least one character"
);
result
=
-
1
;
}
if
(
strlen
(
options
->
Nickname
)
>
MAX_NICKNAME_LEN
)
{
log_fn
(
LOG_WARN
,
"Nickname '%s' has more than %d characters."
,
options
->
Nickname
,
MAX_NICKNAME_LEN
);
...
...
src/or/or.h
View file @
86980cf6
...
...
@@ -1386,6 +1386,8 @@ int router_is_me(routerinfo_t *router);
int
router_rebuild_descriptor
(
void
);
int
router_dump_router_to_string
(
char
*
s
,
int
maxlen
,
routerinfo_t
*
router
,
crypto_pk_env_t
*
ident_key
);
int
is_legal_nickname
(
const
char
*
s
);
int
is_legal_nickname_or_hexdigest
(
const
char
*
s
);
/********************************* routerlist.c ***************************/
...
...
src/or/router.c
View file @
86980cf6
...
...
@@ -774,6 +774,26 @@ int router_dump_router_to_string(char *s, int maxlen, routerinfo_t *router,
return
written
+
1
;
}
int
is_legal_nickname
(
const
char
*
s
)
{
size_t
len
;
tor_assert
(
s
);
len
=
strlen
(
s
);
return
len
>
0
&&
len
<=
MAX_NICKNAME_LEN
&&
strspn
(
s
,
LEGAL_NICKNAME_CHARACTERS
)
==
len
;
}
int
is_legal_nickname_or_hexdigest
(
const
char
*
s
)
{
size_t
len
;
tor_assert
(
s
);
if
(
*
s
!=
'$'
)
return
is_legal_nickname
(
s
);
len
=
strlen
(
s
);
return
len
==
HEX_DIGEST_LEN
+
1
&&
strspn
(
s
+
1
,
HEX_CHARACTERS
)
==
len
-
1
;
}
/*
Local Variables:
mode:c
...
...
src/or/routerparse.c
View file @
86980cf6
...
...
@@ -681,13 +681,8 @@ routerinfo_t *router_parse_entry_from_string(const char *s,
if
(
tok
->
n_args
==
2
||
tok
->
n_args
==
5
||
tok
->
n_args
==
6
)
{
router
->
nickname
=
tor_strdup
(
tok
->
args
[
0
]);
if
(
strlen
(
router
->
nickname
)
>
MAX_NICKNAME_LEN
)
{
log_fn
(
LOG_WARN
,
"Router nickname too long."
);
goto
err
;
}
if
(
strspn
(
router
->
nickname
,
LEGAL_NICKNAME_CHARACTERS
)
!=
strlen
(
router
->
nickname
))
{
log_fn
(
LOG_WARN
,
"Router nickname contains illegal characters."
);
if
(
!
is_legal_nickname
(
router
->
nickname
))
{
log_fn
(
LOG_WARN
,
"Router nickname is invalid"
);
goto
err
;
}
router
->
address
=
tor_strdup
(
tok
->
args
[
1
]);
...
...
src/or/test.c
View file @
86980cf6
...
...
@@ -758,6 +758,26 @@ test_dir_format()
test_assert
(
!
crypto_pk_generate_key
(
pk2
));
test_assert
(
!
crypto_pk_generate_key
(
pk3
));
test_assert
(
is_legal_nickname
(
"a"
));
test_assert
(
!
is_legal_nickname
(
""
));
test_assert
(
!
is_legal_nickname
(
"abcdefghijklmnopqrst"
));
/* 20 chars */
test_assert
(
!
is_legal_nickname
(
"abcdefghijklmnopqrst"
));
/* 20 chars */
test_assert
(
!
is_legal_nickname
(
"hyphen-"
));
/* bad char */
test_assert
(
is_legal_nickname
(
"abcdefghijklmnopqrs"
));
/* 19 chars */
test_assert
(
!
is_legal_nickname
(
"$AAAAAAAA01234AAAAAAAAAAAAAAAAAAAAAAAAAAA"
));
/* valid */
test_assert
(
is_legal_nickname_or_hexdigest
(
"$AAAAAAAA01234AAAAAAAAAAAAAAAAAAAAAAAAAAA"
));
/* too short */
test_assert
(
!
is_legal_nickname_or_hexdigest
(
"$AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
));
/* illegal char */
test_assert
(
!
is_legal_nickname_or_hexdigest
(
"$AAAAAAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
));
test_assert
(
is_legal_nickname_or_hexdigest
(
"xyzzy"
));
test_assert
(
is_legal_nickname_or_hexdigest
(
"abcdefghijklmnopqrs"
));
test_assert
(
!
is_legal_nickname_or_hexdigest
(
"abcdefghijklmnopqrst"
));
get_platform_str
(
platform
,
sizeof
(
platform
));
r1
.
address
=
"testaddr1.foo.bar"
;
...
...
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