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
David Goulet
Tor
Commits
4a1e05de
Commit
4a1e05de
authored
Dec 17, 2003
by
Roger Dingledine
Browse files
betcha didn't know strncpy could leave an unterminated string
svn:r949
parent
aba237e3
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/or/dirserv.c
View file @
4a1e05de
...
...
@@ -376,6 +376,7 @@ dirserv_dump_directory_to_string(char *s, int maxlen,
for
(
i
=
0
;
i
<
n_descriptors
;
++
i
)
{
strncat
(
cp
,
descriptor_list
[
i
]
->
descriptor
,
descriptor_list
[
i
]
->
desc_len
);
/* XXX Nick: do strncat and friends null-terminate? man page is ambiguous. */
cp
+=
descriptor_list
[
i
]
->
desc_len
;
assert
(
!*
cp
);
}
...
...
@@ -400,6 +401,7 @@ dirserv_dump_directory_to_string(char *s, int maxlen,
((
int
)
digest
[
2
])
&
0xff
,((
int
)
digest
[
3
])
&
0xff
);
strncpy
(
cp
,
"-----BEGIN SIGNATURE-----
\n
"
,
maxlen
-
i
);
cp
[
maxlen
-
i
-
1
]
=
0
;
i
=
strlen
(
s
);
cp
=
s
+
i
;
...
...
src/or/dns.c
View file @
4a1e05de
...
...
@@ -100,6 +100,7 @@ uint32_t dns_lookup(const char *address) {
}
strncpy(search.address, address, MAX_ADDRESSLEN);
search.address[MAX_ADDRESSLEN-1] = 0;
resolve = SPLAY_FIND(cache_tree, &cache_root, &search);
if(resolve) { /* it's there */
if(resolve->state == CACHE_STATE_VALID) {
...
...
@@ -118,7 +119,7 @@ uint32_t dns_lookup(const char *address) {
}
#endif
/* See if we have a
n addr
for 'exitconn->address'. if so,
/* See if we have a
cache entry
for 'exitconn->address'. if so,
* if resolve valid, put it into exitconn->addr and return 1.
* If resolve failed, return -1.
*
...
...
@@ -140,6 +141,7 @@ int dns_resolve(connection_t *exitconn) {
/* now check the tree to see if 'address' is already there. */
strncpy
(
search
.
address
,
exitconn
->
address
,
MAX_ADDRESSLEN
);
search
.
address
[
MAX_ADDRESSLEN
-
1
]
=
0
;
resolve
=
SPLAY_FIND
(
cache_tree
,
&
cache_root
,
&
search
);
if
(
resolve
)
{
/* already there */
switch
(
resolve
->
state
)
{
...
...
@@ -167,6 +169,7 @@ int dns_resolve(connection_t *exitconn) {
resolve
->
state
=
CACHE_STATE_PENDING
;
resolve
->
expire
=
now
+
MAX_DNS_ENTRY_AGE
;
strncpy
(
resolve
->
address
,
exitconn
->
address
,
MAX_ADDRESSLEN
);
resolve
->
address
[
MAX_ADDRESSLEN
-
1
]
=
0
;
/* add us to the pending list */
pending_connection
=
tor_malloc
(
sizeof
(
struct
pending_connection_t
));
...
...
@@ -226,6 +229,7 @@ void dns_cancel_pending_resolve(char *address, connection_t *onlyconn) {
struct
cached_resolve
*
resolve
,
*
tmp
;
strncpy
(
search
.
address
,
address
,
MAX_ADDRESSLEN
);
search
.
address
[
MAX_ADDRESSLEN
-
1
]
=
0
;
resolve
=
SPLAY_FIND
(
cache_tree
,
&
cache_root
,
&
search
);
if
(
!
resolve
)
{
...
...
@@ -299,6 +303,7 @@ static void dns_found_answer(char *address, uint32_t addr) {
struct
cached_resolve
*
resolve
;
strncpy
(
search
.
address
,
address
,
MAX_ADDRESSLEN
);
search
.
address
[
MAX_ADDRESSLEN
-
1
]
=
0
;
resolve
=
SPLAY_FIND
(
cache_tree
,
&
cache_root
,
&
search
);
if
(
!
resolve
)
{
...
...
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