if (!urandom && (urandom = fopen("/dev/urandom", "r")) == NULL)
return 0;
- fread(&val, sizeof(val), 1, urandom);
+ if (fread(&val, sizeof(val), 1, urandom) != 1)
+ return 0;
return val;
}
r->cl = cl;
r->id = msg->id;
r->fd = cl->rx_fd;
+ cl->rx_fd = -1;
r->ring_size = msg->ring_size;
r->data_size = msg->data_size;
list_add_tail(&r->list, &cl->bufs);
udebug_ubus_ring_notify(r, false);
avl_delete(&rings, &r->node);
list_del(&r->list);
+ close(r->fd);
free(r);
}