- if (unlikely(addr_len < sizeof(struct sockaddr_mptp))) {
- log_error("Invalid size for sockaddr\n");
+ if (unlikely(addr_len < sizeof(struct sockaddr_mptp) + sizeof(struct mptp_dest))) {
+ log_error("Invalid size for sockaddr (%d)\n", addr_len);
if (unlikely(port == 0 || port >= MAX_MPTP_PORT)) {
log_error("Invalid value for sockaddr port (%u)\n", port);
if (unlikely(port == 0 || port >= MAX_MPTP_PORT)) {
log_error("Invalid value for sockaddr port (%u)\n", port);
if (unlikely(ssk->dst == 0 || ssk->dst >= MAX_MPTP_PORT)) {
log_error("Invalid value for destination port(%u)\n", ssk->dst);
err = -EINVAL;
if (unlikely(ssk->dst == 0 || ssk->dst >= MAX_MPTP_PORT)) {
log_error("Invalid value for destination port(%u)\n", ssk->dst);
err = -EINVAL;
static int mptp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len)
{
int err;
static int mptp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, size_t len)
{
int err;
if (unlikely(dport == 0 || dport >= MAX_MPTP_PORT)) {
log_error("Invalid value for destination port(%u)\n", dport);
err = -EINVAL;
if (unlikely(dport == 0 || dport >= MAX_MPTP_PORT)) {
log_error("Invalid value for destination port(%u)\n", dport);
err = -EINVAL;
payload = skb_put(skb, len);
log_debug("payload=%p\n", payload);
payload = skb_put(skb, len);
log_debug("payload=%p\n", payload);
struct sockaddr_mptp * mptp_addr;
int err;
int addr_size = sizeof(struct sockaddr_mptp) + sizeof(struct mptp_dest);
struct sockaddr_mptp * mptp_addr;
int err;
int addr_size = sizeof(struct sockaddr_mptp) + sizeof(struct mptp_dest);
if (unlikely(src == 0 || dst == 0 || src >= MAX_MPTP_PORT || dst >= MAX_MPTP_PORT)) {
log_error("Malformed packet (src=%u, dst=%u)\n", shdr->src, shdr->dst);
goto drop;
if (unlikely(src == 0 || dst == 0 || src >= MAX_MPTP_PORT || dst >= MAX_MPTP_PORT)) {
log_error("Malformed packet (src=%u, dst=%u)\n", shdr->src, shdr->dst);
goto drop;