From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754183AbZBQUc1 (ORCPT ); Tue, 17 Feb 2009 15:32:27 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752864AbZBQUcS (ORCPT ); Tue, 17 Feb 2009 15:32:18 -0500 Received: from smtp6.tech.numericable.fr ([82.216.111.42]:42344 "EHLO smtp6.tech.numericable.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752847AbZBQUcR (ORCPT ); Tue, 17 Feb 2009 15:32:17 -0500 Message-ID: <499B1ECF.2020809@numericable.fr> Date: Tue, 17 Feb 2009 21:32:15 +0100 From: etienne User-Agent: Thunderbird 2.0.0.19 (X11/20090105) MIME-Version: 1.0 To: Casey Schaufler CC: Linux-Kernel , linux-security-module@vger.kernel.org Subject: [PATCH] SMACK smacklabel : apply &MASK to IP inserted in /smack/netlabel References: <499B178B.9090601@numericable.fr> In-Reply-To: <499B178B.9090601@numericable.fr> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org hello, with current code it is possible to insert inconsistent IP/mask in /smack/netlabel before patch : ============== root@etienne-desktop:/home/etienne/linux-2.6# cat /smack/netlabel 12.67.3.2/15 @ 12.67.3.1/15 @ 12.67.2.1/15 @ 12.67.2.1/16 @ 12.67.1.1/16 @ 0.0.0.0/0 @ the solution is to apply the mask to the IP inserted in /smack/netlabel after the patch: ================ root@etienne-desktop:/home/etienne/linux-2.6# echo 12.67.3.2/15 @ > /smack/netlabel root@etienne-desktop:/home/etienne/linux-2.6# cat /smack/netlabel 12.67.0.0/15 @ root@etienne-desktop:/home/etienne/linux-2.6# echo 12.67.3.1/15 @ > /smack/netlabel root@etienne-desktop:/home/etienne/linux-2.6# cat /smack/netlabel 12.67.0.0/15 @ root@etienne-desktop:/home/etienne/linux-2.6# echo 12.67.3.3/15 @ > /smack/netlabel root@etienne-desktop:/home/etienne/linux-2.6# cat /smack/netlabel 12.67.0.0/15 @ regards, Etienne Signed-off-by: ---- diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c index 8e42800..5717150 100644 --- a/security/smack/smackfs.c +++ b/security/smack/smackfs.c @@ -765,6 +765,7 @@ static ssize_t smk_write_netlbladdr(struct file *file, const char __user *buf, mask.s_addr |= bebits; bebits <<= 1; } + newname.sin_addr.s_addr &= mask.s_addr; /* * Only allow one writer at a time. Writes should be * quite rare and small in any case.