char *dup;
tor_assert(s);
dup = tor_malloc(n+1);
- strncpy(dup, s, n);
- dup[n] = 0;
+ strlcpy(dup, s, n+1);
return dup;
}
log_fn(LOG_WARN, "Couldn't find $HOME environment variable while expanding %s", filename);
return NULL;
}
- /* minus two characters for ~/, plus one for /, plus one for NUL. */
+ /* minus two characters for ~/, plus one for /, plus one for NUL.
+ * Round up to 16 in case we can't do math. */
len = strlen(home)+strlen(filename)+16;
result = tor_malloc(len);
snprintf(result,len,"%s/%s",home,filename+2);
ent->nickname = tor_strdup(ri->nickname);
ent->published = ri->published_on;
ent->desc_len = desc_len;
- ent->descriptor = tor_malloc(desc_len+1);
- strncpy(ent->descriptor, start, desc_len);
- ent->descriptor[desc_len] = '\0';
+ ent->descriptor = tor_strndup(start,desc_len);
ent->router = ri;
/* XXX008 is ent->verified useful/used for anything? */
ent->verified = verified; /* XXXX008 support other possibilities. */
purge_expired_resolves(now);
/* now check the tree to see if 'address' is already there. */
- strncpy(search.address, exitconn->address, MAX_ADDRESSLEN);
- search.address[MAX_ADDRESSLEN-1] = 0;
+ strlcpy(search.address, exitconn->address, sizeof(search.address));
resolve = SPLAY_FIND(cache_tree, &cache_root, &search);
if(resolve) { /* already there */
switch(resolve->state) {
resolve = tor_malloc_zero(sizeof(struct cached_resolve));
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;
+ strlcpy(resolve->address, exitconn->address, sizeof(resolve->address));
/* add us to the pending list */
pending_connection = tor_malloc_zero(sizeof(struct pending_connection_t));
tor_assert(conn->type == CONN_TYPE_EXIT);
tor_assert(conn->state == EXIT_CONN_STATE_RESOLVING);
- strncpy(search.address, conn->address, MAX_ADDRESSLEN);
- search.address[MAX_ADDRESSLEN-1] = 0;
+ strlcpy(search.address, conn->address, sizeof(search.address));
resolve = SPLAY_FIND(cache_tree, &cache_root, &search);
if(!resolve) {
struct cached_resolve *resolve;
connection_t *pendconn;
- strncpy(search.address, address, MAX_ADDRESSLEN);
- search.address[MAX_ADDRESSLEN-1] = 0;
+ strlcpy(search.address, address, sizeof(search.address));
resolve = SPLAY_FIND(cache_tree, &cache_root, &search);
if(!resolve) {
connection_t *pendconn;
circuit_t *circ;
- strncpy(search.address, address, MAX_ADDRESSLEN);
- search.address[MAX_ADDRESSLEN-1] = 0;
+ strlcpy(search.address, address, sizeof(search.address));
resolve = SPLAY_FIND(cache_tree, &cache_root, &search);
if(!resolve) {