From: Pavel Emelyanov Date: Mon, 24 Mar 2008 21:57:45 +0000 (-0700) Subject: [NETNS]: Minor information leak via /proc/net/ptype file. X-Git-Tag: v2.6.26-rc1~1138^2~372 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2feb27dbe00cbb4f7d31f90acf6bd0d751dd0a50;p=linux-2.6 [NETNS]: Minor information leak via /proc/net/ptype file. This file displays the registered packet types, but some of them (packet sockets creates such) can be bound to a net device and showing them in a wrong namespace is not correct. Signed-off-by: Pavel Emelyanov Signed-off-by: David S. Miller --- diff --git a/net/core/dev.c b/net/core/dev.c index f973e38b81..aebd086060 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2615,7 +2615,7 @@ static int ptype_seq_show(struct seq_file *seq, void *v) if (v == SEQ_START_TOKEN) seq_puts(seq, "Type Device Function\n"); - else { + else if (pt->dev == NULL || pt->dev->nd_net == seq_file_net(seq)) { if (pt->type == htons(ETH_P_ALL)) seq_puts(seq, "ALL "); else @@ -2639,7 +2639,8 @@ static const struct seq_operations ptype_seq_ops = { static int ptype_seq_open(struct inode *inode, struct file *file) { - return seq_open(file, &ptype_seq_ops); + return seq_open_net(inode, file, &ptype_seq_ops, + sizeof(struct seq_net_private)); } static const struct file_operations ptype_seq_fops = { @@ -2647,7 +2648,7 @@ static const struct file_operations ptype_seq_fops = { .open = ptype_seq_open, .read = seq_read, .llseek = seq_lseek, - .release = seq_release, + .release = seq_release_net, };