mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
Avoid strcat; use snprintf or strlcat instead
svn:r2605
This commit is contained in:
parent
4a9c747f6e
commit
06fa8fc05f
@ -307,8 +307,7 @@ void write_rep_history(const char *filename)
|
||||
const char *name1;
|
||||
|
||||
tmpfile = tor_malloc(strlen(filename)+5);
|
||||
strcpy(tmpfile, filename);
|
||||
strcat(tmpfile, "_tmp");
|
||||
snprintf(tmpfile, strlen(filename)+5, "%s_tmp", filename);
|
||||
|
||||
f = fopen(tmpfile, "w");
|
||||
if (!f) goto done;
|
||||
@ -548,7 +547,7 @@ char *rep_hist_get_bandwidth_lines(void)
|
||||
snprintf(cp, len-(cp-buf), "%d,", b->totals[i]);
|
||||
cp += strlen(cp);
|
||||
}
|
||||
strcat(cp, "\n");
|
||||
strlcat(cp, "\n", len-(cp-buf));
|
||||
++cp;
|
||||
}
|
||||
return buf;
|
||||
|
@ -325,14 +325,14 @@ int init_keys(void) {
|
||||
snprintf(keydir,sizeof(keydir),"%s/fingerprint", datadir);
|
||||
log_fn(LOG_INFO,"Dumping fingerprint to %s...",keydir);
|
||||
tor_assert(strlen(options.Nickname) <= MAX_NICKNAME_LEN);
|
||||
strcpy(fingerprint, options.Nickname);
|
||||
strcat(fingerprint, " ");
|
||||
strlcpy(fingerprint, options.Nickname, sizeof(fingerprint));
|
||||
strlcat(fingerprint, " ", sizeof(fingerprint));
|
||||
if (crypto_pk_get_fingerprint(get_identity_key(),
|
||||
fingerprint+strlen(fingerprint), 1)<0) {
|
||||
log_fn(LOG_ERR, "Error computing fingerprint");
|
||||
return -1;
|
||||
}
|
||||
strcat(fingerprint, "\n");
|
||||
strlcat(fingerprint, "\n", sizeof(fingerprint));
|
||||
if (write_str_to_file(keydir, fingerprint, 0))
|
||||
return -1;
|
||||
if(!authdir_mode())
|
||||
@ -717,7 +717,7 @@ int router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router,
|
||||
/* There is no port set; write ":*" */
|
||||
if (written > maxlen-4)
|
||||
return -1;
|
||||
strcat(s+written, ":*\n");
|
||||
strlcat(s+written, ":*\n", maxlen-written);
|
||||
written += 3;
|
||||
} else if (tmpe->prt_min == tmpe->prt_max) {
|
||||
/* There is only one port; write ":80". */
|
||||
@ -741,7 +741,7 @@ int router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router,
|
||||
return -1;
|
||||
|
||||
/* Sign the directory */
|
||||
strcat(s+written, "router-signature\n");
|
||||
strlcat(s+written, "router-signature\n", maxlen-written);
|
||||
written += strlen(s+written);
|
||||
s[written] = '\0';
|
||||
if (router_get_router_hash(s, digest) < 0)
|
||||
@ -751,14 +751,14 @@ int router_dump_router_to_string(char *s, size_t maxlen, routerinfo_t *router,
|
||||
log_fn(LOG_WARN, "Error signing digest");
|
||||
return -1;
|
||||
}
|
||||
strcat(s+written, "-----BEGIN SIGNATURE-----\n");
|
||||
strlcat(s+written, "-----BEGIN SIGNATURE-----\n", maxlen-written);
|
||||
written += strlen(s+written);
|
||||
if (base64_encode(s+written, maxlen-written, signature, 128) < 0) {
|
||||
log_fn(LOG_WARN, "Couldn't base64-encode signature");
|
||||
return -1;
|
||||
}
|
||||
written += strlen(s+written);
|
||||
strcat(s+written, "-----END SIGNATURE-----\n");
|
||||
strlcat(s+written, "-----END SIGNATURE-----\n", maxlen-written);
|
||||
written += strlen(s+written);
|
||||
|
||||
if (written > maxlen-2)
|
||||
|
@ -1032,14 +1032,10 @@ router_parse_exit_policy(directory_token_t *tok) {
|
||||
newe = tor_malloc_zero(sizeof(struct exit_policy_t));
|
||||
|
||||
newe->string = tor_malloc(8+strlen(arg));
|
||||
if (tok->tp == K_REJECT) {
|
||||
strcpy(newe->string, "reject ");
|
||||
newe->policy_type = EXIT_POLICY_REJECT;
|
||||
} else {
|
||||
strcpy(newe->string, "accept ");
|
||||
newe->policy_type = EXIT_POLICY_ACCEPT;
|
||||
}
|
||||
strcat(newe->string, arg); /* can't overflow */
|
||||
snprintf(newe->string, 8+strlen(arg), "%s %s",
|
||||
(tok->tp == K_REJECT) ? "reject" : "accept", arg);
|
||||
newe->policy_type = (tok->tp == K_REJECT) ? EXIT_POLICY_REJECT
|
||||
: EXIT_POLICY_ACCEPT;
|
||||
|
||||
if (parse_addr_and_port_range(arg, &newe->addr, &newe->msk,
|
||||
&newe->prt_min, &newe->prt_max))
|
||||
|
Loading…
Reference in New Issue
Block a user