Make a couple of newer evdns functions more bulletproof.

svn:r1112
This commit is contained in:
Nick Mathewson 2009-02-10 19:43:19 +00:00
parent da49d6a3b0
commit f04b90e5b3

15
evdns.c
View File

@ -1127,14 +1127,11 @@ static void
default_random_bytes_fn(char *buf, size_t n) default_random_bytes_fn(char *buf, size_t n)
{ {
unsigned i; unsigned i;
for (i = 0; i < n-1; i += 2) { for (i = 0; i < n; i += 2) {
u16 tid = trans_id_function(); u16 tid = trans_id_function();
buf[i] = (tid >> 8) & 0xff; buf[i] = (tid >> 8) & 0xff;
buf[i+1] = tid & 0xff; if (i+1<n)
} buf[i+1] = tid & 0xff;
if (i < n) {
u16 tid = trans_id_function();
buf[i] = tid & 0xff;
} }
} }
@ -2380,6 +2377,12 @@ request_new(struct evdns_base *base, int type, const char *name, int flags,
(void) flags; (void) flags;
if (!req) return NULL; if (!req) return NULL;
if (name_len >= sizeof(namebuf)) {
free(req);
return NULL;
}
memset(req, 0, sizeof(struct evdns_request)); memset(req, 0, sizeof(struct evdns_request));
req->base = base; req->base = base;