mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Use (set|get)_uint(16|32) in lieu of memcpy where reasonable.
svn:r1462
This commit is contained in:
+1
-2
@@ -487,8 +487,7 @@ int fetch_from_buf_socks(buf_t *buf, socks_request_t *req) {
|
||||
}
|
||||
memcpy(req->address,buf->mem+5,len);
|
||||
req->address[len] = 0;
|
||||
memcpy(&req->port, buf->mem+5+len, 2);
|
||||
req->port = ntohs(req->port);
|
||||
req->port = ntohs(get_uint16(buf->mem+5+len));
|
||||
buf_remove_from_front(buf, 5+len+2);
|
||||
return 1;
|
||||
default: /* unsupported */
|
||||
|
||||
+2
-7
@@ -1315,13 +1315,8 @@ int circuit_extend(cell_t *cell, circuit_t *circ) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
memcpy(&circ->n_addr, cell->payload+RELAY_HEADER_SIZE, 4);
|
||||
circ->n_addr = ntohl(circ->n_addr);
|
||||
memcpy(&circ->n_port, cell->payload+RELAY_HEADER_SIZE+4, 2);
|
||||
circ->n_port = ntohs(circ->n_port);
|
||||
|
||||
// circ->n_addr = ntohl(*(uint32_t*)(cell->payload+RELAY_HEADER_SIZE));
|
||||
// circ->n_port = ntohs(*(uint16_t*)(cell->payload+RELAY_HEADER_SIZE+4));
|
||||
circ->n_addr = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE));
|
||||
circ->n_port = ntohs(get_uint16(cell->payload+RELAY_HEADER_SIZE+4));
|
||||
|
||||
n_conn = connection_twin_get_by_addr_port(circ->n_addr,circ->n_port);
|
||||
if(!n_conn || n_conn->type != CONN_TYPE_OR) {
|
||||
|
||||
@@ -18,56 +18,21 @@ static uint32_t client_dns_lookup_entry(const char *address);
|
||||
static void client_dns_set_entry(const char *address, uint32_t val);
|
||||
|
||||
void relay_header_pack(char *dest, const relay_header_t *src) {
|
||||
uint16_t tmp;
|
||||
|
||||
/* we have to do slow memcpy's here, because we screwed up
|
||||
* and made our cell payload not word-aligned. we should fix
|
||||
* this someday.
|
||||
*/
|
||||
|
||||
*(uint8_t*)(dest) = src->command;
|
||||
|
||||
tmp = htons(src->recognized);
|
||||
memcpy(dest+1, &tmp, 2);
|
||||
|
||||
tmp = htons(src->stream_id);
|
||||
memcpy(dest+3, &tmp, 2);
|
||||
|
||||
set_uint16(dest+1, htons(src->recognized));
|
||||
set_uint16(dest+3, htons(src->stream_id));
|
||||
memcpy(dest+5, src->integrity, 4);
|
||||
|
||||
tmp = htons(src->length);
|
||||
memcpy(dest+9, &tmp, 2);
|
||||
|
||||
#if 0
|
||||
*(uint8_t*)(dest) = src->command;
|
||||
*(uint16_t*)(dest+1) = htons(src->recognized);
|
||||
*(uint16_t*)(dest+3) = htons(src->stream_id);
|
||||
memcpy(dest+5, src->integrity, 4);
|
||||
*(uint16_t*)(dest+9) = htons(src->length);
|
||||
#endif
|
||||
set_uint16(dest+9, htons(src->length));
|
||||
}
|
||||
|
||||
void relay_header_unpack(relay_header_t *dest, const char *src) {
|
||||
dest->command = *(uint8_t*)(src);
|
||||
|
||||
memcpy(&dest->recognized, src+1, 2);
|
||||
dest->recognized = ntohs(dest->recognized);
|
||||
|
||||
memcpy(&dest->stream_id, src+3, 2);
|
||||
dest->stream_id = ntohs(dest->stream_id);
|
||||
|
||||
dest->recognized = ntohs(get_uint16(src+1));
|
||||
dest->stream_id = ntohs(get_uint16(src+3));
|
||||
memcpy(dest->integrity, src+5, 4);
|
||||
|
||||
memcpy(&dest->length, src+9, 2);
|
||||
dest->length = ntohs(dest->length);
|
||||
|
||||
#if 0
|
||||
dest->command = *(uint8_t*)(src);
|
||||
dest->recognized = ntohs(*(uint16_t*)(src+1));
|
||||
dest->stream_id = ntohs(*(uint16_t*)(src+3));
|
||||
memcpy(dest->integrity, src+5, 4);
|
||||
dest->length = ntohs(*(uint16_t*)(src+9));
|
||||
#endif
|
||||
dest->length = ntohs(get_uint16(src+9));
|
||||
}
|
||||
|
||||
/* mark and return -1 if there was an unexpected error with the conn,
|
||||
@@ -178,8 +143,7 @@ int connection_edge_end(connection_t *conn, char reason, crypt_path_t *cpath_lay
|
||||
|
||||
payload[0] = reason;
|
||||
if(reason == END_STREAM_REASON_EXITPOLICY) {
|
||||
uint32_t tmp = htonl(conn->addr);
|
||||
memcpy(payload+1, &tmp, 4);
|
||||
set_uint32(payload+1, htonl(conn->addr));
|
||||
// *(uint32_t *)(payload+1) = htonl(conn->addr);
|
||||
payload_len += 4;
|
||||
}
|
||||
@@ -288,8 +252,7 @@ int connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
|
||||
// log_fn(LOG_INFO,"Connected! Notifying application.");
|
||||
conn->state = AP_CONN_STATE_OPEN;
|
||||
if (rh.length >= 4) {
|
||||
memcpy(&addr, cell->payload + RELAY_HEADER_SIZE, 4);
|
||||
addr = ntohl(addr);
|
||||
addr = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE));
|
||||
client_dns_set_entry(conn->socks_request->address, addr);
|
||||
}
|
||||
log_fn(LOG_INFO,"'connected' received after %d seconds.",
|
||||
@@ -370,8 +333,7 @@ int connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
|
||||
* we try a new exit node.
|
||||
* cell->payload+RELAY_HEADER_SIZE+1 holds the destination addr.
|
||||
*/
|
||||
memcpy(&addr, cell->payload+RELAY_HEADER_SIZE+1, 4);
|
||||
addr = ntohl(addr);
|
||||
addr = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE+1));
|
||||
client_dns_set_entry(conn->socks_request->address, addr);
|
||||
/* conn->purpose is still set to general */
|
||||
conn->state = AP_CONN_STATE_CIRCUIT_WAIT;
|
||||
|
||||
@@ -29,7 +29,7 @@ typedef struct rend_service_t {
|
||||
/* Other fields */
|
||||
crypto_pk_env_t *private_key;
|
||||
char service_id[REND_SERVICE_ID_LEN+1];
|
||||
char pk_digest[20];
|
||||
char pk_digest[DIGEST_LEN];
|
||||
smartlist_t *intro_nodes; /* list of nicknames */
|
||||
rend_service_descriptor_t *desc;
|
||||
} rend_service_t;
|
||||
@@ -600,8 +600,8 @@ int rend_services_init(void) {
|
||||
circ = NULL;
|
||||
found = 1;
|
||||
while ((circ = circuit_get_next_by_pk_and_purpose(
|
||||
circ,service->pk_digest,
|
||||
CIRCUIT_PURPOSE_S_ESTABLISH_INTRO))) {
|
||||
circ,service->pk_digest,
|
||||
CIRCUIT_PURPOSE_S_ESTABLISH_INTRO))) {
|
||||
assert(circ->cpath);
|
||||
if (circ->cpath->prev->addr == router->addr &&
|
||||
circ->cpath->prev->port == router->or_port) {
|
||||
|
||||
Reference in New Issue
Block a user