diff options
Diffstat (limited to 'net/tipc/socket.c')
| -rw-r--r-- | net/tipc/socket.c | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 1fd1c8b5ce03..6be21575503a 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c @@ -1278,7 +1278,7 @@ static int __tipc_sendmsg(struct socket *sock, struct msghdr *m, size_t dlen)  	struct tipc_msg *hdr = &tsk->phdr;  	struct tipc_name_seq *seq;  	struct sk_buff_head pkts; -	u32 dnode, dport; +	u32 dport, dnode = 0;  	u32 type, inst;  	int mtu, rc; @@ -1348,6 +1348,8 @@ static int __tipc_sendmsg(struct socket *sock, struct msghdr *m, size_t dlen)  		msg_set_destnode(hdr, dnode);  		msg_set_destport(hdr, dest->addr.id.ref);  		msg_set_hdr_sz(hdr, BASIC_H_SIZE); +	} else { +		return -EINVAL;  	}  	/* Block or return if destination link is congested */ @@ -1514,10 +1516,10 @@ static void tipc_sk_set_orig_addr(struct msghdr *m, struct sk_buff *skb)  	srcaddr->sock.family = AF_TIPC;  	srcaddr->sock.addrtype = TIPC_ADDR_ID; +	srcaddr->sock.scope = 0;  	srcaddr->sock.addr.id.ref = msg_origport(hdr);  	srcaddr->sock.addr.id.node = msg_orignode(hdr);  	srcaddr->sock.addr.name.domain = 0; -	srcaddr->sock.scope = 0;  	m->msg_namelen = sizeof(struct sockaddr_tipc);  	if (!msg_in_group(hdr)) @@ -1526,6 +1528,7 @@ static void tipc_sk_set_orig_addr(struct msghdr *m, struct sk_buff *skb)  	/* Group message users may also want to know sending member's id */  	srcaddr->member.family = AF_TIPC;  	srcaddr->member.addrtype = TIPC_ADDR_NAME; +	srcaddr->member.scope = 0;  	srcaddr->member.addr.name.name.type = msg_nametype(hdr);  	srcaddr->member.addr.name.name.instance = TIPC_SKB_CB(skb)->orig_member;  	srcaddr->member.addr.name.domain = 0; |