X-Git-Url: https://git.distorted.org.uk/~mdw/secnet/blobdiff_plain/59533c169a94f1a4d0eec39e72c0594b8dd57ab9..a620a048db382ace2ab42cfe0f6e832de1197527:/site.c diff --git a/site.c b/site.c index 624752c..fcc36d8 100644 --- a/site.c +++ b/site.c @@ -1121,6 +1121,9 @@ static bool_t site_incoming(void *sst, struct buffer_if *buf, const struct comm_addr *source) { struct site *st=sst; + + if (buf->size < 12) return False; + uint32_t dest=ntohl(*(uint32_t *)buf->start); if (dest==0) { @@ -1339,15 +1342,16 @@ static list_t *site_apply(closure_t *self, struct cloc loc, dict_t *context, st->netlink=find_cl_if(dict,"link",CL_NETLINK,True,"site",loc); list_t *comms_cfg=dict_lookup(dict,"comm"); - if (!comms_cfg) cfgfatal(loc,"site","closure list \"comm\" not found"); + if (!comms_cfg) cfgfatal(loc,"site","closure list \"comm\" not found\n"); st->ncomms=list_length(comms_cfg); st->comms=safe_malloc_ary(sizeof(*st->comms),st->ncomms,"comms"); assert(st->ncomms); for (i=0; incomms; i++) { item_t *item=list_elem(comms_cfg,i); - if (item->type!=t_closure) cfgfatal(loc,"site","comm is not a closure"); + if (item->type!=t_closure) + cfgfatal(loc,"site","comm is not a closure\n"); closure_t *cl=item->data.closure; - if (cl->type!=CL_COMM) cfgfatal(loc,"site","comm closure wrong type"); + if (cl->type!=CL_COMM) cfgfatal(loc,"site","comm closure wrong type\n"); st->comms[i]=cl->interface; } @@ -1599,7 +1603,7 @@ static void transport_peers_copy(struct site *st, transport_peers *dst, dst->npeers=src->npeers; memcpy(dst->peers, src->peers, sizeof(*dst->peers) * dst->npeers); transport_peers_debug(st,dst,"copy", - src->npeers, &src->peers->addr, sizeof(src->peers)); + src->npeers, &src->peers->addr, sizeof(*src->peers)); } void transport_xmit(struct site *st, transport_peers *peers,