From patchwork Tue Sep 14 12:48:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493097 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 291C3C433FE for ; Tue, 14 Sep 2021 12:50:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0E8BB60F58 for ; Tue, 14 Sep 2021 12:50:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232758AbhINMwC (ORCPT ); Tue, 14 Sep 2021 08:52:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43060 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232613AbhINMwC (ORCPT ); Tue, 14 Sep 2021 08:52:02 -0400 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A7666C061574 for ; Tue, 14 Sep 2021 05:50:44 -0700 (PDT) Received: by mail-ed1-x534.google.com with SMTP id z94so13508066ede.8 for ; Tue, 14 Sep 2021 05:50:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=wxVrwi7fqRCUdi0rstdW3xmsLEx4av06gtb8OTs43dA=; b=VEyv86Gb6XT6v6opXjl3kKKyRNRgOTf0cr/0ciRCGV7ti6/l3FSJcWpD8OeywbPSBk RGbEoQYv+hydsvjrVFTkpRrMUy51RUfjynd/Vxty37HvMIjF3ILL5uS3634DVOBhZA4V dli22+Y6pFlgIBhSn3VayghjMzt8nvjbsHG3OYuIDu30WdIL8F5FVV8NGUGxUBZqwCJn OxJfHMB7XAk15kcv1nHFysWwbY0865pqZnJAwbL0x0YmREHyizSNkc9oc0w5HbvK48jj ED3+lkTeX1NB1E7wZBnNJaVuVvdEH70muKZuGS8uMvh2QMALn7lQNM/jZlLJ52gqi6rB 9U4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wxVrwi7fqRCUdi0rstdW3xmsLEx4av06gtb8OTs43dA=; b=364RJKvX8X+Edv1pDn/Hwzu9CSi/7AYZ+3CQfoBxbTVHWB/NJuXCPxe4EvdlZhV9ny ZFv1F2GGxCCOuzRF2wyMPs3W3c2l6ljK+Mb5E1SyFYRkWn3+/G2Le7By1U5yPByip1aP t96ykcO4MRomE339SWMLU4tvbmQPvs8QkuJTIAPxPCJtKQxNmTyYkoNT50kOjr5KSP9X I6z/av0D1rOPjcFRbh58BGZxHce3CkZkls6gLERl2rI81vEYQ2v0gnEDsmEAkfq8oYMA a5nx/E59CggWHqMNuQIx7ZgSgmXEpnn2SUHAVSDpI6B3uLEdatF20zvDfIBxpMLbwGjn ii8w== X-Gm-Message-State: AOAM530izUZ1qTyb3ZTJhVHeDuwgiY460nv+ZXoa8xqStKnKJDaR+5ec LkqEVEPDusU4v+dd9Jtxv8QqD9y+9UA= X-Google-Smtp-Source: ABdhPJxKWKMvotIZz2YXsuwPMGx3oWBmNr7lNiyNajgrkga7jxpL8kqTpDoNqPs1OKQrLxQEu0wvsQ== X-Received: by 2002:a05:6402:49a:: with SMTP id k26mr19613030edv.279.1631623843176; Tue, 14 Sep 2021 05:50:43 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:42 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 01/13] libsepol: avoid implicit conversions Date: Tue, 14 Sep 2021 14:48:16 +0200 Message-Id: <20210914124828.19488-2-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Avoid implicit conversions from signed to unsigned values, found by UB sanitizers, by using unsigned values in the first place. util.c:95:15: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' Signed-off-by: Christian Göttsche --- libsepol/src/util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsepol/src/util.c b/libsepol/src/util.c index a47cae87..902c63c5 100644 --- a/libsepol/src/util.c +++ b/libsepol/src/util.c @@ -92,7 +92,7 @@ char *sepol_av_to_string(policydb_t * policydbp, uint32_t tclass, cladatum = policydbp->class_val_to_struct[tclass - 1]; p = avbuf; for (i = 0; i < cladatum->permissions.nprim; i++) { - if (av & (1 << i)) { + if (av & (UINT32_C(1) << i)) { v.val = i + 1; rc = hashtab_map(cladatum->permissions.table, perm_name, &v); From patchwork Tue Sep 14 12:48:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493101 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5ADF0C4332F for ; Tue, 14 Sep 2021 12:50:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 44AC060F58 for ; Tue, 14 Sep 2021 12:50:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232613AbhINMwC (ORCPT ); Tue, 14 Sep 2021 08:52:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43062 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232902AbhINMwC (ORCPT ); Tue, 14 Sep 2021 08:52:02 -0400 Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com [IPv6:2a00:1450:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1768DC061760 for ; Tue, 14 Sep 2021 05:50:45 -0700 (PDT) Received: by mail-ed1-x52f.google.com with SMTP id v5so19712982edc.2 for ; Tue, 14 Sep 2021 05:50:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=0WjwCzQgBKZD7tXonFIJXydSihUgcjVDMEH63M2fMKE=; b=VJyH035mCxPTPFV7sR7Y0umFZPnTzJxwp9QS/HsXicyKYKfmH2swvYDiH6jD7gkZu3 pkg5IJe0ICZvzwji7AA45kGc4Yql7Cdxd8HBKmezV1+NGn3YqQ2COFW/nNHD2L8BZWyn NBtybFaqgC6c4SUZ39ofYezEXpdZjzsSFpC6I+5E6dclY8zMi1hxZild8j91ur3BPWyN KRMvpyzbFSc/++76YCnsdw9cK1Sh+Byct+91GG6EmSttUfTl4EtWJ4Vte0rwBcdQ31ct PMeQxF5qt22zeOIeSzRAMhoa8utEtu3v8Jhwf9Z8qg+rpoGR/MmFCc/QeVcRiDN4FyZV LWcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0WjwCzQgBKZD7tXonFIJXydSihUgcjVDMEH63M2fMKE=; b=vTOfi5u1hBe5FhQCBS8insWDUUQzbHrC5LTnlLBmoMWD8bXX+YU7qO9q3OHcACccA/ MfKEHjTUnL117ZeC36+yWCqueGAUVwbvflU0z2B+rT0gX7/9b+NBTLZue0kYe3OlMdNY 5LbQr4cVEitvLeH+eBBrGfUFQYp3KSrPVUEBAB0kKVO6s/L1sTMXINxIR8BPnJ6rJ2Pd olTkeJ6/CuAJiIMCjF+wt6zUulKx8EAp5hm8VAqMvqrTTTPGfEay/7jcbG8WzCMpRTVI W2IsNmjljGjPc3uS8zc6WZIOLiuWejEnFUuJiUhUKa+CKI1blPIznqStpfWZ7qNvbk+M Dp5A== X-Gm-Message-State: AOAM530/1x8Q4vbA6PpVtutx/f0WmoIO+yNhgV30f5kj7x70kVZVu9v0 +172gVkyJpb5AS2Kq6zjUC4bE21IGQc= X-Google-Smtp-Source: ABdhPJzZSQGVMbCZ8C659Bd39kFiDx9ayU2qpRSpflTPfpmtyIaFyrUC0uAfmNGlxUTHKbc3vu1jAA== X-Received: by 2002:a50:bb09:: with SMTP id y9mr15016018ede.89.1631623843693; Tue, 14 Sep 2021 05:50:43 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:43 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 02/13] libsepol: free memory after policy validation Date: Tue, 14 Sep 2021 14:48:17 +0200 Message-Id: <20210914124828.19488-3-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Found while running the checkpolicy/test/dispol binary. Direct leak of 24 byte(s) in 1 object(s) allocated from: #0 0x49bacd in __interceptor_malloc (./checkpolicy/test/dispol+0x49bacd) #1 0x5551e1 in ebitmap_set_bit ./libsepol/src/ebitmap.c:326:27 #2 0x517873 in create_gap_ebitmap ./libsepol/src/policydb_validate.c:23:8 #3 0x517873 in validate_init ./libsepol/src/policydb_validate.c:34:6 #4 0x50fa47 in validate_array_init ./libsepol/src/policydb_validate.c:44:6 #5 0x50fa47 in validate_policydb ./libsepol/src/policydb_validate.c:732:6 #6 0x4f22df in policydb_read ./libsepol/src/policydb.c:4538:6 #7 0x4cddb3 in main ./checkpolicy/test/dispol.c:437:8 #8 0x7f5980e47e49 in __libc_start_main csu/../csu/libc-start.c:314:16 Indirect leak of 48 byte(s) in 2 object(s) allocated from: #0 0x49bacd in __interceptor_malloc (./checkpolicy/test/dispol+0x49bacd) #1 0x5551e1 in ebitmap_set_bit ./libsepol/src/ebitmap.c:326:27 #2 0x517873 in create_gap_ebitmap ./libsepol/src/policydb_validate.c:23:8 #3 0x517873 in validate_init ./libsepol/src/policydb_validate.c:34:6 #4 0x50fa47 in validate_array_init ./libsepol/src/policydb_validate.c:44:6 #5 0x50fa47 in validate_policydb ./libsepol/src/policydb_validate.c:732:6 #6 0x4f22df in policydb_read ./libsepol/src/policydb.c:4538:6 #7 0x4cddb3 in main ./checkpolicy/test/dispol.c:437:8 #8 0x7f5980e47e49 in __libc_start_main csu/../csu/libc-start.c:314:16 Signed-off-by: Christian Göttsche --- libsepol/src/policydb_validate.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/libsepol/src/policydb_validate.c b/libsepol/src/policydb_validate.c index 246aa6e3..f9a4b942 100644 --- a/libsepol/src/policydb_validate.c +++ b/libsepol/src/policydb_validate.c @@ -722,12 +722,21 @@ bad: return -1; } +static void validate_destroy(validate_t flavors[]) +{ + unsigned int i; + + for (i = 0; i < SYM_NUM; i++) { + ebitmap_destroy(&flavors[i].gaps); + } +} + /* * Validate policydb */ int validate_policydb(sepol_handle_t *handle, policydb_t *p) { - validate_t flavors[SYM_NUM]; + validate_t flavors[SYM_NUM] = {}; if (validate_array_init(p, flavors)) goto bad; @@ -756,9 +765,12 @@ int validate_policydb(sepol_handle_t *handle, policydb_t *p) if (validate_datum_arrays(handle, p, flavors)) goto bad; + validate_destroy(flavors); + return 0; bad: ERR(handle, "Invalid policydb"); + validate_destroy(flavors); return -1; } From patchwork Tue Sep 14 12:48:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493099 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA06EC43217 for ; Tue, 14 Sep 2021 12:50:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BD24760F70 for ; Tue, 14 Sep 2021 12:50:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232898AbhINMwD (ORCPT ); Tue, 14 Sep 2021 08:52:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43066 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232986AbhINMwD (ORCPT ); Tue, 14 Sep 2021 08:52:03 -0400 Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0AB7C061574 for ; Tue, 14 Sep 2021 05:50:45 -0700 (PDT) Received: by mail-ed1-x52a.google.com with SMTP id n10so19678151eda.10 for ; Tue, 14 Sep 2021 05:50:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=4018gBXnpw2V2+Rsdr197n0FQegQy70vC//idsvaing=; b=Z5RUpYzpwodlQBmHbbAQlJxzhOn3FQ+iG9dmNCwQDt0Ti+y5DNLsiAsucTS2Oi4Evm 54Qq8xCetka8gA+3APGeRza7tESBthSxtswHjb9proKIYp6F+DFJD0sqz41acVfZ95mQ 76w10ysjb3YbFlj5Z93KWnNWKgk0xmEucjI+GlO38CBLeuZY/R1/WZEkhdXWN1MFZU9d NJNtQheIYoPXQCBA0jLierI52X8EwXrE2uAE8FlRI+q0HcC7CFWor3Hr9ZCtW/ExS7i0 Fl9RX026VRtZNScCw4sAcoyM5TW8tgAjyIBSwaYlRGmU6xUZYnA/nhslCY2u8d9mnIaq IBwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4018gBXnpw2V2+Rsdr197n0FQegQy70vC//idsvaing=; b=SC4dh20BQi2AX1JYCU+yB5QGj/m8mC7yG22fxzhJkKXNzIBJNp9qoFBd89yzXplhze PBns9ycnUSWfvXGWWUHl6pg82Ebt/STYBzP640RL7RkDQM+0O3dvFUBIyjhUGwrvOqDG IUI7sSqv4f+dzGdnNkkTMuealGizs31eNtqEd3dPHl0ZSaAjcSSuIQoTqgLjbmzyoE5o ldQrVwnDB1diCoz0Yx5fp81MRhO+Eqp7G/iHA0yOQKKH5fEqZzPjzspuB+8Iwj9fkRDM hve3ZwN3bW+ROREwGSUrjDA0aUI8kzpYfTA3gT4h2j68Dvpjw2BX53NY5IQtasulwGvK SeZA== X-Gm-Message-State: AOAM530QasYTbunPxqxF5fRZfWT/XEOJjtcBgCgF1SZ7Vc/JsuGWeUrj WToLesPOy1gEVEuDNsN3lxmTSgccuq8= X-Google-Smtp-Source: ABdhPJyH5EBkn7s58ml3MAy10f+oF6vdMoJC67K83Z3KxXCMKb+o2FluAWTEYhGi7ZG3MJr1SX1TXQ== X-Received: by 2002:aa7:d78e:: with SMTP id s14mr6612269edq.171.1631623844208; Tue, 14 Sep 2021 05:50:44 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:43 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 03/13] checkpolicy: enclose macro argument in parentheses Date: Tue, 14 Sep 2021 14:48:18 +0200 Message-Id: <20210914124828.19488-4-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Found by clang-tidy Signed-off-by: Christian Göttsche --- checkpolicy/policy_define.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/checkpolicy/policy_define.c b/checkpolicy/policy_define.c index 75a67d5c..7e7801d3 100644 --- a/checkpolicy/policy_define.c +++ b/checkpolicy/policy_define.c @@ -2143,13 +2143,13 @@ out: } /* index of the u32 containing the permission */ -#define XPERM_IDX(x) (x >> 5) +#define XPERM_IDX(x) ((x) >> 5) /* set bits 0 through x-1 within the u32 */ -#define XPERM_SETBITS(x) ((1U << (x & 0x1f)) - 1) +#define XPERM_SETBITS(x) ((1U << ((x) & 0x1f)) - 1) /* low value for this u32 */ -#define XPERM_LOW(x) (x << 5) +#define XPERM_LOW(x) ((x) << 5) /* high value for this u32 */ -#define XPERM_HIGH(x) (((x + 1) << 5) - 1) +#define XPERM_HIGH(x) ((((x) + 1) << 5) - 1) void avrule_xperm_setrangebits(uint16_t low, uint16_t high, av_extended_perms_t *xperms) { @@ -2189,9 +2189,9 @@ int avrule_xperms_used(const av_extended_perms_t *xperms) * dir, size, driver, and function. Only the driver and function fields * are considered here */ -#define IOC_DRIV(x) (x >> 8) -#define IOC_FUNC(x) (x & 0xff) -#define IOC_CMD(driver, func) ((driver << 8) + func) +#define IOC_DRIV(x) ((x) >> 8) +#define IOC_FUNC(x) ((x) & 0xff) +#define IOC_CMD(driver, func) (((driver) << 8) + (func)) int avrule_ioctl_partialdriver(struct av_ioctl_range_list *rangelist, av_extended_perms_t *complete_driver, av_extended_perms_t **extended_perms) From patchwork Tue Sep 14 12:48:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493103 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 845D7C433F5 for ; Tue, 14 Sep 2021 12:50:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6896860F58 for ; Tue, 14 Sep 2021 12:50:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232979AbhINMwD (ORCPT ); Tue, 14 Sep 2021 08:52:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232902AbhINMwD (ORCPT ); Tue, 14 Sep 2021 08:52:03 -0400 Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 401C7C061574 for ; Tue, 14 Sep 2021 05:50:46 -0700 (PDT) Received: by mail-ed1-x52a.google.com with SMTP id z94so13508189ede.8 for ; Tue, 14 Sep 2021 05:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=VaHOaiP8+U4rpuL3cP9P9jqDOOWzBBi0VtCS3a1Rcmw=; b=go98Ck5udomYFOq7Qo6jWchKsyLHo2rP7cKjD2XiOkc/7k9+f62JHMkHgLr5uqhNtv HIOaZ23yb9iK8M2P7guwASRbRmqimexlYllj/4EJfcyj9W2PPkP4vt9vQjfyDkpxAHP7 HW/wQkg6u41/Fk01YjDHFuWbFmGyBvXyiEnrUTXoJMlgz3EmACh1r7/jHzLCnVdo94+6 i3pVOJZsdgOqlUQym2y8y+C0IjVBAPRJcpthyW7K0/6LK+wSreF+hNjfmNpwTQsoCsUY V1QvjV1lZ9892RMbwgCx6q6LpkvxCOCmOUkS3Kh72gmAPBRDxO+QghHBnqYnpe0+9o8q 0ycg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=VaHOaiP8+U4rpuL3cP9P9jqDOOWzBBi0VtCS3a1Rcmw=; b=wqXKxoUPMsHIWxdgeMNLNANwLoQ3FO7PpLahdJi1mGitekD+TBOUg7pOil6AJprx0S zpjk/Ds0P2x4ALXIilD8H01aWXJOqJEI9yXd3n+0/bvxzMznGV/IjNVgrhlCVxdU77RB sV0wpHLOzr2kC8rmPEhrbGrHCF1VEZVf8NCHA/rCH4pYedgefsnFizglPrnIt55UQNN9 3KtvgGvrvq8Gv5o8b10/WSQdkOA9+9nwYTIDDhqpdzwSd+mGtL1b1hjBU9khRxhdnOKp KV5EgkIbfLxoqHg8Gjt+EADfTTfUNJ9IUo0Walo406DZWtSFMbGIRrg5xtYgLVbD/3zk lV4w== X-Gm-Message-State: AOAM532JkJKyUoJarW6hPV4hMJCyGbaAUZXo3ajZUz1HPpzdosklmbrM 0+l3tjP4bDOcKa+WXM1CHYVti1WQdVo= X-Google-Smtp-Source: ABdhPJwTrI1lPmcjaIIK0nT1ohpBPrmvwMq85hcwQMT+ERpxfeUen3d2Lf16aaOMAcZmSGRgCblD/w== X-Received: by 2002:a05:6402:905:: with SMTP id g5mr11703898edz.125.1631623844837; Tue, 14 Sep 2021 05:50:44 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:44 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 04/13] checkpolicy: misc checkmodule tweaks Date: Tue, 14 Sep 2021 14:48:19 +0200 Message-Id: <20210914124828.19488-5-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Add missing argument in usage message. Drop redundant includes `optarg` and `optind`, which are declared in . Use consistent quit style by using `exit(1)`. Mark read-only options struct const. Check closing file streams after writing, which can signal a failed write or sync to disk and should be checked. Signed-off-by: Christian Göttsche --- checkpolicy/checkmodule.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/checkpolicy/checkmodule.c b/checkpolicy/checkmodule.c index 316b2898..3432608b 100644 --- a/checkpolicy/checkmodule.c +++ b/checkpolicy/checkmodule.c @@ -34,9 +34,6 @@ #include "checkpolicy.h" #include "parse_util.h" -extern char *optarg; -extern int optind; - static sidtab_t sidtab; extern int mlspol; @@ -126,7 +123,7 @@ static int write_binary_policy(policydb_t * p, FILE *outfp) static __attribute__((__noreturn__)) void usage(const char *progname) { - printf("usage: %s [-h] [-V] [-b] [-C] [-E] [-U handle_unknown] [-m] [-M] [-o FILE] [INPUT]\n", progname); + printf("usage: %s [-h] [-V] [-b] [-C] [-E] [-U handle_unknown] [-m] [-M] [-o FILE] [-c VERSION] [INPUT]\n", progname); printf("Build base and policy modules.\n"); printf("Options:\n"); printf(" INPUT build module from INPUT (else read from \"%s\")\n", @@ -155,7 +152,7 @@ int main(int argc, char **argv) int ch; int show_version = 0; policydb_t modpolicydb; - struct option long_options[] = { + const struct option long_options[] = { {"help", no_argument, NULL, 'h'}, {"output", required_argument, NULL, 'o'}, {"binary", no_argument, NULL, 'b'}, @@ -271,7 +268,7 @@ int main(int argc, char **argv) } else { if (policydb_init(&modpolicydb)) { fprintf(stderr, "%s: out of memory!\n", argv[0]); - return -1; + exit(1); } modpolicydb.policy_type = policy_type; @@ -283,7 +280,7 @@ int main(int argc, char **argv) } if (hierarchy_check_constraints(NULL, &modpolicydb)) { - return -1; + exit(1); } } @@ -336,7 +333,7 @@ int main(int argc, char **argv) FILE *outfp = fopen(outfile, "w"); if (!outfp) { - perror(outfile); + fprintf(stderr, "%s: error opening %s: %s\n", argv[0], outfile, strerror(errno)); exit(1); } @@ -352,7 +349,10 @@ int main(int argc, char **argv) } } - fclose(outfp); + if (fclose(outfp)) { + fprintf(stderr, "%s: error closing %s: %s\n", argv[0], outfile, strerror(errno)); + exit(1); + } } else if (cil) { fprintf(stderr, "%s: No file to write CIL was specified\n", argv[0]); exit(1); From patchwork Tue Sep 14 12:48:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493105 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1DC1C433FE for ; Tue, 14 Sep 2021 12:50:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B549360F58 for ; Tue, 14 Sep 2021 12:50:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232800AbhINMwE (ORCPT ); Tue, 14 Sep 2021 08:52:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232902AbhINMwE (ORCPT ); Tue, 14 Sep 2021 08:52:04 -0400 Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CC063C061574 for ; Tue, 14 Sep 2021 05:50:46 -0700 (PDT) Received: by mail-ed1-x52a.google.com with SMTP id c22so18310767edn.12 for ; Tue, 14 Sep 2021 05:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=nlvDZ/SHK6NzWFTCvnTe+yP7fLIc5O+De7SX0iB5krU=; b=CLovRqVTTQPTTrrcw6wom5elEB4ztOz8UaemdDgVo0Cbaydb946cPxzCMQd7T3Z7kX t5oGrejaph7/cMfVzkd9xw1f4NMKCGgA/rCGdXPgxjcLTfG9A40PD6xlwQsL9jMVk4tA GHueVqWfCe752sEeJ+Y2YpMaJCkcvr+/k8kN9PgixEOCNhxnfxFdIA1QD/MY3DeZ8/iM BatVYnTpIwwXeHwvWxD+e0EyS6GO6WiU1bwJvNY0Y/SsFjVyVs+p0xCUnrPDCVKo+thx VpWo1bJBgNm9uFnUd1E4P6oF7lB/uS6TrilGXzKz+FoKYun8GjSF6K7m1NQhtmnUtR4u Z1RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nlvDZ/SHK6NzWFTCvnTe+yP7fLIc5O+De7SX0iB5krU=; b=CahKcHbOdKVLPrbvB1ud7phOi8nhZ3YbJzr01sBgIAk4dFEl9ZtA4CIxLNzLfT8bmg qYDTEQqw1sPNvMhyIKZOIrTuwC3aLVH4ZLu0KbyKuzUQ2Kt7FpxUSB23RhAONQSTvsV5 U+0tOey3a9BLkGDsQk3c7o/t2sNwMzW35uuS3LYr4sgDdn7ra0XmvWZC7GcsrUcDtbXv 5rC/ulP3v0RTUfJn3oBcI5/gO9pID3lsKOpc+9b6GkaBOZduuLHXFjfS4Dkf1SRAniPz Y2FDry1jfTeXWhQXSTcxn9fSXduUDcSlu4CyOr+EBo/mXI5XyPTB7pCZGPP+RRvUKbe/ zyMg== X-Gm-Message-State: AOAM530aS02tNrm7dXHeHXjb8FzzNlGJH2kycXsZtCKZSvu0FCqZSM4y 3apFjOjuM/3ra4i/kAXzkUkzeDZIUW4= X-Google-Smtp-Source: ABdhPJxkK+IqN6gGnV35AqTZKZaWsoXv4ZM2nc1LiJWR9qz4drF0pyrW1n1FIOWI6KbshbMOA76bhw== X-Received: by 2002:a50:e004:: with SMTP id e4mr10461899edl.164.1631623845364; Tue, 14 Sep 2021 05:50:45 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:45 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 05/13] checkpolicy: misc checkpolicy tweaks Date: Tue, 14 Sep 2021 14:48:20 +0200 Message-Id: <20210914124828.19488-6-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Add missing argument in usage message. Drop redundant includes `optarg` and `optind`, which are declared in . Mark file local functions static. Drop unused function declaration. Check closing file streams after writing, which can signal a failed write or sync to disk and should be checked. Signed-off-by: Christian Göttsche --- checkpolicy/checkpolicy.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/checkpolicy/checkpolicy.c b/checkpolicy/checkpolicy.c index e6cfd337..9459486b 100644 --- a/checkpolicy/checkpolicy.c +++ b/checkpolicy/checkpolicy.c @@ -92,9 +92,6 @@ #include "checkpolicy.h" #include "parse_util.h" -extern char *optarg; -extern int optind; - static policydb_t policydb; static sidtab_t sidtab; @@ -112,7 +109,7 @@ static __attribute__((__noreturn__)) void usage(const char *progname) { printf ("usage: %s [-b[F]] [-C] [-d] [-U handle_unknown (allow,deny,reject)] [-M] " - "[-c policyvers (%d-%d)] [-o output_file|-] [-S] " + "[-c policyvers (%d-%d)] [-o output_file|-] [-S] [-O]" "[-t target_platform (selinux,xen)] [-E] [-V] [input_file]\n", progname, POLICYDB_VERSION_MIN, POLICYDB_VERSION_MAX); exit(1); @@ -297,9 +294,7 @@ static int identify_equiv_types(void) } #endif -extern char *av_to_string(uint32_t tclass, sepol_access_vector_t av); - -int display_bools(void) +static int display_bools(void) { uint32_t i; @@ -310,10 +305,10 @@ int display_bools(void) return 0; } -void display_expr(cond_expr_t * exp) +static void display_expr(const cond_expr_t * exp) { - cond_expr_t *cur; + const cond_expr_t *cur; for (cur = exp; cur != NULL; cur = cur->next) { switch (cur->expr_type) { case COND_BOOL: @@ -345,9 +340,9 @@ void display_expr(cond_expr_t * exp) } } -int display_cond_expressions(void) +static int display_cond_expressions(void) { - cond_node_t *cur; + const cond_node_t *cur; for (cur = policydbp->cond_list; cur != NULL; cur = cur->next) { printf("expression: "); @@ -357,7 +352,7 @@ int display_cond_expressions(void) return 0; } -int change_bool(char *name, int state) +static int change_bool(const char *name, int state) { cond_bool_datum_t *bool; @@ -412,7 +407,7 @@ int main(int argc, char **argv) unsigned int reason; int flags; struct policy_file pf; - struct option long_options[] = { + const struct option long_options[] = { {"output", required_argument, NULL, 'o'}, {"target", required_argument, NULL, 't'}, {"binary", no_argument, NULL, 'b'}, @@ -706,7 +701,10 @@ int main(int argc, char **argv) } if (outfp != stdout) { - fclose(outfp); + if(fclose(outfp)) { + fprintf(stderr, "%s: error closing %s: %s\n", argv[0], outfile, strerror(errno)); + exit(1); + } } } else if (cil) { fprintf(stderr, "%s: No file to write CIL was specified\n", argv[0]); From patchwork Tue Sep 14 12:48:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493107 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63C6DC433EF for ; Tue, 14 Sep 2021 12:50:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4D90760F70 for ; Tue, 14 Sep 2021 12:50:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233016AbhINMwF (ORCPT ); Tue, 14 Sep 2021 08:52:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43082 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232902AbhINMwE (ORCPT ); Tue, 14 Sep 2021 08:52:04 -0400 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 72DFCC061574 for ; Tue, 14 Sep 2021 05:50:47 -0700 (PDT) Received: by mail-ed1-x534.google.com with SMTP id v24so13503550eda.3 for ; Tue, 14 Sep 2021 05:50:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=s3Bxn0Hf+vSkpjFPS7SQn2Z9Hknp/vWbIBNPRs/iv1A=; b=OpETLL20moJdY7LRo4S0Ksr7rdr2pxwg3jQb5zRXn7pOR98wYACkgTXI5+V0rEqFZL mc83KoEOEfq8zM8XCIe9/RVDk65fhE+900wzYvjwD90w1rxVyUCpA2ak1SPPizSFl4tI J+SyRxP/5nwG4t9BYFrVZLzLiQsm22bA3VtuJGRv9u+SU17yx0Py7O5MCWNCw1s0T12/ WEyzq58Wf/34+IoD757zcTHoOahFfJ1DGtqKJL9Pj67PS8nGc4KLuixG13esQh8tce4g AT1eQuhsYBvUM3VyoN2BkM2nMzolzf84TVK1abKH+lSOhb4ycFUk9/C5km+2DWJ6Y+dX 99rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=s3Bxn0Hf+vSkpjFPS7SQn2Z9Hknp/vWbIBNPRs/iv1A=; b=SmMde3kXDfBxm3KdL8hK2XOXMnG7qHu6D940ph4iiyMo23X8RKeqG+4OsPOOloRMVF 6k1IG01oKTMIdCtEf5oK5eZoHT7Ur5VwxFE0xevAd7mkc0H4PXLSN4R7cFeZSGDXGVb8 wwh2Vw+lBS+xTGz0aYa4pI2BARQmukDXl/qSbaQHlajEqBpfG0P4KpxKN/3QUXBFRjsn 4fdZT4WWHccBwIGGCgSBJTas7WHKVgk2YLST561tib+k0SsNFi9QBycSQSYoQvUyTkDj +5FmkxJdsAge6xmlC9zWZS0cm+x6ZKFaRwr6bPu29WvmXGNU8024sDn0QiROW2tjUsY7 n4Pg== X-Gm-Message-State: AOAM532AMT7bGs29zVqqjzVoxrCjmouKM7IB4GrnbtCEy4NTnJTWuSj2 iatDQjyzRS23Mxo3Lo4Xmt/U3cqs1vQ= X-Google-Smtp-Source: ABdhPJwD1zpFjrXhNOV6Q82Zm7j4slnY+4o/vxpcCOCMA8usKiOcdYFysJximPrMFnHAEMvN5OFh7Q== X-Received: by 2002:a05:6402:34c3:: with SMTP id w3mr19014218edc.335.1631623845962; Tue, 14 Sep 2021 05:50:45 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:45 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 06/13] checkpolicy: mark read-only parameters in module compiler const Date: Tue, 14 Sep 2021 14:48:21 +0200 Message-Id: <20210914124828.19488-7-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Make it more obvious which parameters are read-only and not being modified and allow callers to pass const pointers. Signed-off-by: Christian Göttsche --- checkpolicy/module_compiler.c | 26 +++++++++++++------------- checkpolicy/module_compiler.h | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/checkpolicy/module_compiler.c b/checkpolicy/module_compiler.c index ada7cb2a..e8f15f4e 100644 --- a/checkpolicy/module_compiler.c +++ b/checkpolicy/module_compiler.c @@ -1104,14 +1104,14 @@ int require_cat(int pass) return 0; } -static int is_scope_in_stack(scope_datum_t * scope, scope_stack_t * stack) +static int is_scope_in_stack(const scope_datum_t * scope, const scope_stack_t * stack) { uint32_t i; if (stack == NULL) { return 0; /* no matching scope found */ } if (stack->type == 1) { - avrule_decl_t *decl = stack->decl; + const avrule_decl_t *decl = stack->decl; for (i = 0; i < scope->decl_ids_len; i++) { if (scope->decl_ids[i] == decl->decl_id) { return 1; @@ -1126,9 +1126,9 @@ static int is_scope_in_stack(scope_datum_t * scope, scope_stack_t * stack) return is_scope_in_stack(scope, stack->parent); } -int is_id_in_scope(uint32_t symbol_type, hashtab_key_t id) +int is_id_in_scope(uint32_t symbol_type, const_hashtab_key_t id) { - scope_datum_t *scope = + const scope_datum_t *scope = (scope_datum_t *) hashtab_search(policydbp->scope[symbol_type]. table, id); if (scope == NULL) { @@ -1138,7 +1138,7 @@ int is_id_in_scope(uint32_t symbol_type, hashtab_key_t id) } static int is_perm_in_scope_index(uint32_t perm_value, uint32_t class_value, - scope_index_t * scope) + const scope_index_t * scope) { if (class_value > scope->class_perms_len) { return 1; @@ -1151,7 +1151,7 @@ static int is_perm_in_scope_index(uint32_t perm_value, uint32_t class_value, } static int is_perm_in_stack(uint32_t perm_value, uint32_t class_value, - scope_stack_t * stack) + const scope_stack_t * stack) { if (stack == NULL) { return 0; /* no matching scope found */ @@ -1173,12 +1173,12 @@ static int is_perm_in_stack(uint32_t perm_value, uint32_t class_value, return is_perm_in_stack(perm_value, class_value, stack->parent); } -int is_perm_in_scope(hashtab_key_t perm_id, hashtab_key_t class_id) +int is_perm_in_scope(const_hashtab_key_t perm_id, const_hashtab_key_t class_id) { - class_datum_t *cladatum = + const class_datum_t *cladatum = (class_datum_t *) hashtab_search(policydbp->p_classes.table, class_id); - perm_datum_t *perdatum; + const perm_datum_t *perdatum; if (cladatum == NULL) { return 1; } @@ -1361,17 +1361,17 @@ int begin_optional_else(int pass) return 0; } -static int copy_requirements(avrule_decl_t * dest, scope_stack_t * stack) +static int copy_requirements(avrule_decl_t * dest, const scope_stack_t * stack) { uint32_t i; if (stack == NULL) { return 0; } if (stack->type == 1) { - scope_index_t *src_scope = &stack->decl->required; + const scope_index_t *src_scope = &stack->decl->required; scope_index_t *dest_scope = &dest->required; for (i = 0; i < SYM_NUM; i++) { - ebitmap_t *src_bitmap = &src_scope->scope[i]; + const ebitmap_t *src_bitmap = &src_scope->scope[i]; ebitmap_t *dest_bitmap = &dest_scope->scope[i]; if (ebitmap_union(dest_bitmap, src_bitmap)) { yyerror("Out of memory!"); @@ -1397,7 +1397,7 @@ static int copy_requirements(avrule_decl_t * dest, scope_stack_t * stack) src_scope->class_perms_len; } for (i = 0; i < src_scope->class_perms_len; i++) { - ebitmap_t *src_bitmap = &src_scope->class_perms_map[i]; + const ebitmap_t *src_bitmap = &src_scope->class_perms_map[i]; ebitmap_t *dest_bitmap = &dest_scope->class_perms_map[i]; if (ebitmap_union(dest_bitmap, src_bitmap)) { diff --git a/checkpolicy/module_compiler.h b/checkpolicy/module_compiler.h index 72c2d9bb..29b824b4 100644 --- a/checkpolicy/module_compiler.h +++ b/checkpolicy/module_compiler.h @@ -65,12 +65,12 @@ int require_cat(int pass); /* Check if an identifier is within the scope of the current * declaration or any of its parents. Return 1 if it is, 0 if not. * If the identifier is not known at all then return 1 (truth). */ -int is_id_in_scope(uint32_t symbol_type, hashtab_key_t id); +int is_id_in_scope(uint32_t symbol_type, const_hashtab_key_t id); /* Check if a particular permission is within the scope of the current * declaration or any of its parents. Return 1 if it is, 0 if not. * If the identifier is not known at all then return 1 (truth). */ -int is_perm_in_scope(hashtab_key_t perm_id, hashtab_key_t class_id); +int is_perm_in_scope(const_hashtab_key_t perm_id, const_hashtab_key_t class_id); /* Search the current avrules block for a conditional with the same * expression as 'cond'. If the conditional does not exist then From patchwork Tue Sep 14 12:48:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493109 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ADA61C4332F for ; Tue, 14 Sep 2021 12:50:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9A81F60F58 for ; Tue, 14 Sep 2021 12:50:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232864AbhINMwG (ORCPT ); Tue, 14 Sep 2021 08:52:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233015AbhINMwF (ORCPT ); Tue, 14 Sep 2021 08:52:05 -0400 Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3C54C061762 for ; Tue, 14 Sep 2021 05:50:47 -0700 (PDT) Received: by mail-ed1-x531.google.com with SMTP id c21so11863957edj.0 for ; Tue, 14 Sep 2021 05:50:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=0xnftEX/8RMO9TxboJnoJJLRnQz2F3DsGIplRYkbz2Y=; b=WgHfigpVvCEAtlMpD4wlvUjNmDFRkzTcCUdMnny6T9OFOVI5evoswvhmAJw0CHsymA L6LaMLtNB9HJbkIlH3h+a68c6MrfwyRdx0fGS0lj1+bm22Wj//n4Lr7Z0ndz11Zn/KUr 0CfS69dhSUebuBpa9Xl9zn5cfsJKDAio/qs4fY/7wOB0slBbmYv+Tu/D7uANHD9qy7tU VMDdMSBTbIC0UivyAD8Xv6AccIxBfEVj6mcTBtrBd5IQp2gPHOslD0ifiwur+tuf3PqA RzfZ4Bn8hhFpiGubK2rd7FddoECJdWLAqrXsuv60lrlSpSTN4+AIcxerABl9o9P2/61w 3wFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0xnftEX/8RMO9TxboJnoJJLRnQz2F3DsGIplRYkbz2Y=; b=TPuT7p+WG8FrGKdzjIojicEIDY9aj2HuX6ibCxNb5D3cddqAHPlWo4gyJ0yKU00BEJ hTqDzouQRe0snjXf2EBUuErm65zS8QBP0Yrka+DbNYilwuaUO/gVgyS/zboXkCw2cOAO A//u8KXqlk9vzhzU1rO08u/u3pStAWlMyjMUT9jHUxAxV2Xjx64nrIjO2rVDhihaTinw ZK56fmPIkRG+PBu4LXe85KY/2jO0bPb/wBuIBwZYL9hmRGygrwbIXZCbHsF/3omWtbA3 hE5beFroH5P/OI1tJeHQiLbKZ696GgWxnwcV0QQ4hUhlloH4ZQoeOalAAIp/n5ii7VHE iFJA== X-Gm-Message-State: AOAM531Cffh9RJ7plV4g/wWDbmMaAlMwSG9AgzjsziWzir96nVSTZO1n uF8ZQ9EyDfx0FTRa2HxFqZTB1jgjVRU= X-Google-Smtp-Source: ABdhPJwkpKq+qPFt0rrRG1ADouKCEybT9VU8nDYoZ4SHfl2A7wTUm/+7cVkkR3aQosCyAWBOoTeAbA== X-Received: by 2002:a05:6402:150a:: with SMTP id f10mr19132375edw.318.1631623846542; Tue, 14 Sep 2021 05:50:46 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:46 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 07/13] checkpolicy: mark file local functions in policy_define static Date: Tue, 14 Sep 2021 14:48:22 +0200 Message-Id: <20210914124828.19488-8-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Also remove the unused function `avrule_ioctl_freeranges()`. Signed-off-by: Christian Göttsche --- checkpolicy/policy_define.c | 45 ++++++++++++++----------------------- 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/checkpolicy/policy_define.c b/checkpolicy/policy_define.c index 7e7801d3..11707700 100644 --- a/checkpolicy/policy_define.c +++ b/checkpolicy/policy_define.c @@ -1605,7 +1605,7 @@ static int set_types(type_set_t * set, char *id, int *add, char starallowed) return -1; } -int define_compute_type_helper(int which, avrule_t ** rule) +static int define_compute_type_helper(int which, avrule_t ** rule) { char *id; type_datum_t *datum; @@ -1832,7 +1832,7 @@ struct av_ioctl_range_list { struct av_ioctl_range_list *next; }; -int avrule_sort_ioctls(struct av_ioctl_range_list **rangehead) +static int avrule_sort_ioctls(struct av_ioctl_range_list **rangehead) { struct av_ioctl_range_list *r, *r2, *sorted, *sortedhead = NULL; @@ -1880,7 +1880,7 @@ error: return -1; } -int avrule_merge_ioctls(struct av_ioctl_range_list **rangehead) +static int avrule_merge_ioctls(struct av_ioctl_range_list **rangehead) { struct av_ioctl_range_list *r, *tmp; r = *rangehead; @@ -1900,7 +1900,7 @@ int avrule_merge_ioctls(struct av_ioctl_range_list **rangehead) return 0; } -int avrule_read_ioctls(struct av_ioctl_range_list **rangehead) +static int avrule_read_ioctls(struct av_ioctl_range_list **rangehead) { char *id; struct av_ioctl_range_list *rnew, *r = NULL; @@ -1953,7 +1953,7 @@ error: } /* flip to included ranges */ -int avrule_omit_ioctls(struct av_ioctl_range_list **rangehead) +static int avrule_omit_ioctls(struct av_ioctl_range_list **rangehead) { struct av_ioctl_range_list *rnew, *r, *newhead, *r2; @@ -2001,7 +2001,7 @@ error: return -1; } -int avrule_ioctl_ranges(struct av_ioctl_range_list **rangelist) +static int avrule_ioctl_ranges(struct av_ioctl_range_list **rangelist) { struct av_ioctl_range_list *rangehead; uint8_t omit; @@ -2029,7 +2029,7 @@ int avrule_ioctl_ranges(struct av_ioctl_range_list **rangelist) return 0; } -int define_te_avtab_xperms_helper(int which, avrule_t ** rule) +static int define_te_avtab_xperms_helper(int which, avrule_t ** rule) { char *id; class_perm_node_t *perms, *tail = NULL, *cur_perms = NULL; @@ -2150,7 +2150,7 @@ out: #define XPERM_LOW(x) ((x) << 5) /* high value for this u32 */ #define XPERM_HIGH(x) ((((x) + 1) << 5) - 1) -void avrule_xperm_setrangebits(uint16_t low, uint16_t high, +static void avrule_xperm_setrangebits(uint16_t low, uint16_t high, av_extended_perms_t *xperms) { unsigned int i; @@ -2172,7 +2172,7 @@ void avrule_xperm_setrangebits(uint16_t low, uint16_t high, } } -int avrule_xperms_used(const av_extended_perms_t *xperms) +static int avrule_xperms_used(const av_extended_perms_t *xperms) { unsigned int i; @@ -2192,7 +2192,7 @@ int avrule_xperms_used(const av_extended_perms_t *xperms) #define IOC_DRIV(x) ((x) >> 8) #define IOC_FUNC(x) ((x) & 0xff) #define IOC_CMD(driver, func) (((driver) << 8) + (func)) -int avrule_ioctl_partialdriver(struct av_ioctl_range_list *rangelist, +static int avrule_ioctl_partialdriver(struct av_ioctl_range_list *rangelist, av_extended_perms_t *complete_driver, av_extended_perms_t **extended_perms) { @@ -2231,7 +2231,7 @@ int avrule_ioctl_partialdriver(struct av_ioctl_range_list *rangelist, } -int avrule_ioctl_completedriver(struct av_ioctl_range_list *rangelist, +static int avrule_ioctl_completedriver(struct av_ioctl_range_list *rangelist, av_extended_perms_t **extended_perms) { struct av_ioctl_range_list *r; @@ -2273,7 +2273,7 @@ int avrule_ioctl_completedriver(struct av_ioctl_range_list *rangelist, return 0; } -int avrule_ioctl_func(struct av_ioctl_range_list *rangelist, +static int avrule_ioctl_func(struct av_ioctl_range_list *rangelist, av_extended_perms_t **extended_perms, unsigned int driver) { struct av_ioctl_range_list *r; @@ -2323,18 +2323,7 @@ int avrule_ioctl_func(struct av_ioctl_range_list *rangelist, return 0; } -void avrule_ioctl_freeranges(struct av_ioctl_range_list *rangelist) -{ - struct av_ioctl_range_list *r, *tmp; - r = rangelist; - while (r) { - tmp = r; - r = r->next; - free(tmp); - } -} - -unsigned int xperms_for_each_bit(unsigned int *bit, av_extended_perms_t *xperms) +static unsigned int xperms_for_each_bit(unsigned int *bit, av_extended_perms_t *xperms) { unsigned int i; for (i = *bit; i < sizeof(xperms->perms)*8; i++) { @@ -2347,7 +2336,7 @@ unsigned int xperms_for_each_bit(unsigned int *bit, av_extended_perms_t *xperms) return 0; } -int avrule_cpy(avrule_t *dest, const avrule_t *src) +static int avrule_cpy(avrule_t *dest, const avrule_t *src) { class_perm_node_t *src_perms; class_perm_node_t *dest_perms, *dest_tail; @@ -2395,7 +2384,7 @@ int avrule_cpy(avrule_t *dest, const avrule_t *src) return 0; } -int define_te_avtab_ioctl(const avrule_t *avrule_template) +static int define_te_avtab_ioctl(const avrule_t *avrule_template) { avrule_t *avrule; struct av_ioctl_range_list *rangelist; @@ -2490,7 +2479,7 @@ int define_te_avtab_extended_perms(int which) return 0; } -int define_te_avtab_helper(int which, avrule_t ** rule) +static int define_te_avtab_helper(int which, avrule_t ** rule) { char *id; class_datum_t *cladatum; @@ -5470,7 +5459,7 @@ int define_fs_use(int behavior) return 0; } -int define_genfs_context_helper(char *fstype, int has_type) +static int define_genfs_context_helper(char *fstype, int has_type) { struct genfs *genfs_p, *genfs, *newgenfs; ocontext_t *newc, *c, *head, *p; From patchwork Tue Sep 14 12:48:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493113 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF3FAC433F5 for ; Tue, 14 Sep 2021 12:50:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D9CA460F58 for ; Tue, 14 Sep 2021 12:50:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232902AbhINMwG (ORCPT ); Tue, 14 Sep 2021 08:52:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232986AbhINMwF (ORCPT ); Tue, 14 Sep 2021 08:52:05 -0400 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80924C061766 for ; Tue, 14 Sep 2021 05:50:48 -0700 (PDT) Received: by mail-ed1-x52c.google.com with SMTP id j13so19684733edv.13 for ; Tue, 14 Sep 2021 05:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=sUcWbZEsagYCsYe2kOOTbpLjbFUKNZmcmVw/Fchgzw8=; b=LDoAYN1km4otTjpiH//EDyHdaZKlSgD/fbiFPGC6WQJqawe9Rl4Iu8TiMbfPXD09uZ gXES0MHFs6FAiunH6emmJbpMX0iX1CVCee8o9vK5+87lzU9yDR90Jq5r67dDKrDEliJX oRMte0wBX3F+Ejyxe1BdjQDfwLEaNlicf3G0y7fdudcxaRxXKTig8iCofrMlhNh7mcim ttIacsgyI4Mph5wYrGszt2WVfAsytiQBwKkhJu7NM5zYW1/wnMH/WrnvGj/HOxah63jY 4fro7bVZuCi0ZIK/bds7nDDiZ8yDd1VRjuFGm3YJVkyJiivXEyLv0TM9A/hSuATOHLIs 6BjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=sUcWbZEsagYCsYe2kOOTbpLjbFUKNZmcmVw/Fchgzw8=; b=7VF0Hp0gzCo7+WN4bur0QlIC1sDIILqUqxEGrP6RahWhTsUTeSmMF0p4NvhmmnoXaE Pak/bEfn65wGcYjii0oJONUKYx0kSX/VEUqTFw9AZluMV8wFtW7jmPRRPAop+y2yNBdG IALhiLxNqu7QpZzBWE7+YsDbRbh9m/Q97SYFIX4NbKakXEYL3H46pRJjHAEA4sGX/HEe 2Hk47LTXdFyYw0Rxmizgd0C1Ej2h8umq16FTcW4SDS3OVcJG+ngYGLq2nWS0l9BTVMLY CsuaV3QPKeiea+/lP1gf96RcElSM8EakTap0P9Cmq/k7Hm86v5vNvAOcWzF7ADSb4IKu p3/w== X-Gm-Message-State: AOAM530FY8M3kgUWIPjh21m3nCncnZrPVvPL20mzGKCNWxPxzKASG9Jm MUDA+lzwPR3hv/gkdFw0c/LhLLd3zxI= X-Google-Smtp-Source: ABdhPJzhjCwpFnSWge09TMiKsb2P0jOJIgVorWen9HMSzQodfIdt/ctUTxiPY7SgWJi+M3QC/LPyjw== X-Received: by 2002:a05:6402:518e:: with SMTP id q14mr19079628edd.268.1631623847058; Tue, 14 Sep 2021 05:50:47 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:46 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 08/13] checkpolicy: add missing function declarations Date: Tue, 14 Sep 2021 14:48:23 +0200 Message-Id: <20210914124828.19488-9-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Ideally they should be declared in the corresponding header file, but the overall include style in the checkpolicy code is quite messy. Declare them for now in the source file before defining them to silence related compiler warnings: policy_define.c:84:6: error: no previous prototype for function 'init_parser' [-Werror,-Wmissing-prototypes] void init_parser(int pass_number) ^ policy_define.c:93:6: error: no previous prototype for function 'yyerror2' [-Werror,-Wmissing-prototypes] void yyerror2(const char *fmt, ...) ^ Signed-off-by: Christian Göttsche --- checkpolicy/policy_define.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/checkpolicy/policy_define.c b/checkpolicy/policy_define.c index 11707700..c71e0571 100644 --- a/checkpolicy/policy_define.c +++ b/checkpolicy/policy_define.c @@ -60,6 +60,10 @@ #include "module_compiler.h" #include "policy_define.h" +extern void init_parser(int pass_number); +__attribute__ ((format(printf, 1, 2))) +extern void yyerror2(const char *fmt, ...); + policydb_t *policydbp; queue_t id_queue = 0; unsigned int pass; @@ -89,7 +93,6 @@ void init_parser(int pass_number) pass = pass_number; } -__attribute__ ((format(printf, 1, 2))) void yyerror2(const char *fmt, ...) { va_list ap; From patchwork Tue Sep 14 12:48:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493111 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 62FEBC43219 for ; Tue, 14 Sep 2021 12:50:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4F79760F58 for ; Tue, 14 Sep 2021 12:50:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232986AbhINMwG (ORCPT ); Tue, 14 Sep 2021 08:52:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233003AbhINMwG (ORCPT ); Tue, 14 Sep 2021 08:52:06 -0400 Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 032B3C061760 for ; Tue, 14 Sep 2021 05:50:49 -0700 (PDT) Received: by mail-ed1-x52d.google.com with SMTP id n10so19678389eda.10 for ; Tue, 14 Sep 2021 05:50:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=vNE1e9mEnoTqmeRgeC8ybL/zlx4MVHTgHYCCk/5UPKI=; b=ZzyUnkTAFdCkhYSBQpu+P9MQe/tKL3r6LjIGUDMO/QxSOAA74fPhPKOLAD8tPg0jQx RnmTFCuboDNCB6Ykpjey4G9Pxw6APwbwZBxuHYjQYHf/lD1ne/2jhrMt2elSGHrXfHKL j2dAvlUz7Caw/iOiAyk3HuOHcWhm7JQscMLhRoN+thvdUHbDlQ06ILVRwaxFqPhFw+6d OqOZNv3OHsfrbdKc5wHn3gqlPcIIaAjxYrLhSsynQJpayUoqb2P9NBpqqUlRVFiEpo7V zpi6mddb4dNlAyL/HKzbcAzzJNan4C/VI4xRtf84thY5c5dGWaMscu532Z0g2iDdNF8h hFYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vNE1e9mEnoTqmeRgeC8ybL/zlx4MVHTgHYCCk/5UPKI=; b=V5nO/HGzaiPXFLp0k1tOEjf5KeInJEi6gUn4RSO7Rqlo7TLvdP1F0zqdPqj/xNn1x+ IIMC9GfzU2/4T+7P18eJwSM1Kheigdi8ovB/mlz+61+fZuiCqtJhclnp79uThv0iw2jY dyZgu3E9OgooGkkiATjnxoQPDze7JSBUdMPSJKqK58t6lGnxnXjwre+ycxlR7U+/dvuo NufCrSpKeZoqOZNrpkxRilZK5qr9FBHaSHOhzSO6D73TInGYpcoBzZn7XIi3noClseRo gsWbY8c8sQT7ZYaGSffj2UC30iaYhaY9jghWBSCXoYmKJfAsLhcyzSodWzJngo4ZswIx 0zLw== X-Gm-Message-State: AOAM530DwanVOjRmkTDBi1dRy377SmlSNriUd2XVedVIDu/OnbQpB+wW alq+SOymyfSxwCmlfD4Oom6kqo6M1Fw= X-Google-Smtp-Source: ABdhPJxkLt1dUY9OdgPMy11x/mgi/DtysZWzKP35nW4XMKnlM3XqLDosaRr0VEF6hxNsLE3zpfEK3Q== X-Received: by 2002:aa7:c617:: with SMTP id h23mr17752346edq.357.1631623847636; Tue, 14 Sep 2021 05:50:47 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:47 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 09/13] checkpolicy: resolve dismod memory leaks Date: Tue, 14 Sep 2021 14:48:24 +0200 Message-Id: <20210914124828.19488-10-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Example leak: Indirect leak of 4 byte(s) in 1 object(s) allocated from: #0 0x49bacd in __interceptor_malloc (./checkpolicy/test/dismod+0x49bacd) #1 0x58ae54 in add_i_to_a ./libsepol/src/util.c:55:21 #2 0x53ea8e in symtab_insert ./libsepol/src/policydb.c:1729:6 #3 0x536252 in roles_init ./libsepol/src/policydb.c:772:7 #4 0x536252 in policydb_init ./libsepol/src/policydb.c:892:7 #5 0x562ff1 in sepol_policydb_create ./libsepol/src/policydb_public.c:69:6 #6 0x521a7c in module_package_init ./libsepol/src/module.c:96:6 #7 0x521a7c in sepol_module_package_create ./libsepol/src/module.c:126:7 #8 0x4cfb80 in read_policy ./checkpolicy/test/dismod.c:750:7 #9 0x4cda10 in main ./checkpolicy/test/dismod.c:878:6 #10 0x7f8538d01e49 in __libc_start_main csu/../csu/libc-start.c:314:16 Signed-off-by: Christian Göttsche --- checkpolicy/test/dismod.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/checkpolicy/test/dismod.c b/checkpolicy/test/dismod.c index 90c29318..9550b999 100644 --- a/checkpolicy/test/dismod.c +++ b/checkpolicy/test/dismod.c @@ -751,12 +751,15 @@ static int read_policy(char *filename, policydb_t * policy) fprintf(stderr, "%s: Out of memory!\n", __FUNCTION__); exit(1); } + policydb_destroy((policydb_t *) package->policy); + free(package->policy); package->policy = (sepol_policydb_t *) policy; package->file_contexts = NULL; retval = sepol_module_package_read(package, (sepol_policy_file_t *) & f, 1); - free(package->file_contexts); + package->policy = NULL; + sepol_module_package_free(package); } else { if (policydb_init(policy)) { fprintf(stderr, "%s: Out of memory!\n", __FUNCTION__); From patchwork Tue Sep 14 12:48:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493115 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE7F3C4321E for ; Tue, 14 Sep 2021 12:50:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BC2FD60F70 for ; Tue, 14 Sep 2021 12:50:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233003AbhINMwH (ORCPT ); Tue, 14 Sep 2021 08:52:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43104 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233001AbhINMwH (ORCPT ); Tue, 14 Sep 2021 08:52:07 -0400 Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com [IPv6:2a00:1450:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2D46C061574 for ; Tue, 14 Sep 2021 05:50:49 -0700 (PDT) Received: by mail-ej1-x634.google.com with SMTP id n27so28658935eja.5 for ; Tue, 14 Sep 2021 05:50:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=BQasiyHoRS2fp1DDItVAAVd0KVYaxsvAdkxxZMUyp2Y=; b=WQXnekqNmBFbbd5i1t7p71+bi4tJOsbnWJBJELoJWKXmWCFKov59E04yUTNVGnPHsE ePQAKq3eNmkpo7NhLHC1eHB50H45se7PzLBphLDRi/AzcNxRNppS0pdspM/xb5Ant/4r nY06fpXpt9iOKJPWbPOtLIZ14EgIgGbDE9j83bXITUSXG+S9QnqYvER3TADrisKjISbH jIyZCHfmURj0pAzXSajEZJ1tM4TFtriI2OchBRAyoqJWY3pCzjVVyYimtUyyvroNK/kH n2aesAMSn1sh5FmQO008XB3HfF6ujjVEKJdi7FfhUXguRaQrClrdc7NXw5FAc4JbYB7e n36Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BQasiyHoRS2fp1DDItVAAVd0KVYaxsvAdkxxZMUyp2Y=; b=ZM/3CX3Kamltp2V6qCdxSxtH9g6Ru0ioMRlzJTW/EfXkYMT3hT9glRWN6BCnLXRNO2 POqOIDoYSvFmvUPCZnarBufWJ0MI8jZSuUhAwF6nXryMaXf3T4QMel5fHCiEncI9SHSy 86sFPBDqdelik8eaC0urWDMqeJCGZSIgNjO57DTD57q8mplB6QT2KKbLiONSKCee6Lc/ 782l9sUFyh8OJWa1hjPQ5nEax9uIS1lALGAure/rNhVg2kkZee8rtO2I2j5sGuDTWYce FMVX+nwjR++H9qJPGnH3moLnscIdTtM46rbyHAcz3xo0/74pR/9OVDTIYiQL0Z9gKE9B Mu1w== X-Gm-Message-State: AOAM530/EcliWa4u8WjOVN0SZT25S5REey/9n5PKKDQgi3ixmZrLzBMJ bcDI8tgSk3JrEC+GPghizjRYJp1jrKE= X-Google-Smtp-Source: ABdhPJwsFpsiTAb1f85mNRHkxFcJa8SuhA7oEBT1+y8+/v3QvGqx7SkHxtZH1xR2aYFou0wpXCiMgA== X-Received: by 2002:a17:906:4c8c:: with SMTP id q12mr18832593eju.254.1631623848163; Tue, 14 Sep 2021 05:50:48 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:47 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 10/13] checkpolicy: avoid implicit conversion Date: Tue, 14 Sep 2021 14:48:25 +0200 Message-Id: <20210914124828.19488-11-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Avoid implicit conversions from signed to unsigned values, found by UB sanitizers, by using unsigned values in the first place. dismod.c:92:42: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' Signed-off-by: Christian Göttsche --- checkpolicy/test/dismod.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/checkpolicy/test/dismod.c b/checkpolicy/test/dismod.c index 9550b999..792deb3a 100644 --- a/checkpolicy/test/dismod.c +++ b/checkpolicy/test/dismod.c @@ -89,7 +89,7 @@ static void render_access_bitmap(ebitmap_t * map, uint32_t class, fprintf(fp, "{"); for (i = ebitmap_startbit(map); i < ebitmap_length(map); i++) { if (ebitmap_get_bit(map, i)) { - perm = sepol_av_to_string(p, class, 1 << i); + perm = sepol_av_to_string(p, class, UINT32_C(1) << i); if (perm) fprintf(fp, " %s", perm); } From patchwork Tue Sep 14 12:48:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493117 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53416C433EF for ; Tue, 14 Sep 2021 12:50:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3D37560F58 for ; Tue, 14 Sep 2021 12:50:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233015AbhINMwH (ORCPT ); Tue, 14 Sep 2021 08:52:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43108 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233001AbhINMwH (ORCPT ); Tue, 14 Sep 2021 08:52:07 -0400 Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com [IPv6:2a00:1450:4864:20::535]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2DCC4C061760 for ; Tue, 14 Sep 2021 05:50:50 -0700 (PDT) Received: by mail-ed1-x535.google.com with SMTP id c22so18311080edn.12 for ; Tue, 14 Sep 2021 05:50:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=D1AoMropzllZOsLvZSZ2ud+yeMiAjVWTDSbTeIIwkCM=; b=DNRpWm3Mw6nXbq1sskvbtoEclIMoBH6sHXQvBUH0fAgxlJJ36EOucIWs2b+VF/xHJM VANfqv3cnzq0jcrL1cimgJGXzLf99CAIrD1PWkIZTI52lUdO84sq4cfQOvq0HbeMOeJS pPmWrLTWLbf2Yd6tphFOJB1yWwcHlPohuyJKfb1zsX3+XyBtyZu2MvQc93yuZukTx+SR 0c+2UBK5tqTHiPngqfPzlf+QsJilK/2HRQYGFnoDEYSkQXPKqY0G/fPGSKKywkyU8zac vqOup5bXAY1RzCF9WJfb51N6CIse9J/YMibs9Vm6kVfLfjkfhftRyQ0Qea15iBaUIfMc RZhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=D1AoMropzllZOsLvZSZ2ud+yeMiAjVWTDSbTeIIwkCM=; b=LkjYFxJtlOk35LjUYK8sSGpJr2K4mozm5/8FUHB+mocPvMwe/2ZfsLUqXCVWboK8Fl uMpcGTW8FhgAaeIYWSAkluth2nqjrZ1LAoWlUjfaQe2JyGhzt0q+23sL+HEnm50JKotT bUh6IO+UkWpR6bpRU8C0Mmv4iYh6+yIqWExRusVtcofZghtjO0IBVyTofamtzAPMJQV8 vCuhId6NIQP5TXnh6ehMhsmNGbI8k3vzCQt3RSKiS9akqjDF3r9DKZAwwETTCGlrgU50 C7rgBkbcs2Y2RN4YqTK8zO+eJ+WJ866xFq+88XcziQ0w/pWOssrQQzYAZKlYUBtMsu7c /Qrg== X-Gm-Message-State: AOAM5320qu/vycYSnvcP2bCgHIUkd9TGRtCx+QsHFqVGCdi0luBHGHj/ w5g/JelQCT2uyIdvb1/XZA8+dvIZYtQ= X-Google-Smtp-Source: ABdhPJxyJrleDG1x+kSxu8OVsQh2dgi4unjf/4qUvV6vCAFQIfC9yF0zjzEslPgA6dLpW5Ox4auGhA== X-Received: by 2002:a05:6402:49a:: with SMTP id k26mr19613482edv.279.1631623848739; Tue, 14 Sep 2021 05:50:48 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:48 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 11/13] checkpolicy: error out on parsing too big integers Date: Tue, 14 Sep 2021 14:48:26 +0200 Message-Id: <20210914124828.19488-12-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Error out instead of silently converting too big integer values in policy sources. policy_parse.y:893:41: runtime error: implicit conversion from type 'unsigned long' of value 18446744073709551615 (64-bit, unsigned) to type 'unsigned int' changed the value to 4294967295 (32-bit, unsigned) Signed-off-by: Christian Göttsche --- checkpolicy/policy_parse.y | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/checkpolicy/policy_parse.y b/checkpolicy/policy_parse.y index 6098eb50..e969d973 100644 --- a/checkpolicy/policy_parse.y +++ b/checkpolicy/policy_parse.y @@ -890,10 +890,22 @@ filename : FILENAME { yytext[strlen(yytext) - 1] = '\0'; if (insert_id(yytext + 1,0)) return -1; } ; number : NUMBER - { $$ = strtoul(yytext,NULL,0); } + { unsigned long x; + errno = 0; + x = strtoul(yytext, NULL, 0); + if (errno || x > UINT_MAX) + return -1; + $$ = (unsigned int) x; + } ; number64 : NUMBER - { $$ = strtoull(yytext,NULL,0); } + { unsigned long long x; + errno = 0; + x = strtoull(yytext, NULL, 0); + if (errno) + return -1; + $$ = (uint64_t) x; + } ; ipv6_addr : IPV6_ADDR { if (insert_id(yytext,0)) return -1; } From patchwork Tue Sep 14 12:48:27 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493119 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DCD5FC43217 for ; Tue, 14 Sep 2021 12:50:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C5BEE60F58 for ; Tue, 14 Sep 2021 12:50:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233023AbhINMwI (ORCPT ); Tue, 14 Sep 2021 08:52:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43116 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233001AbhINMwI (ORCPT ); Tue, 14 Sep 2021 08:52:08 -0400 Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BA10CC061574 for ; Tue, 14 Sep 2021 05:50:50 -0700 (PDT) Received: by mail-ed1-x534.google.com with SMTP id i6so19703987edu.1 for ; Tue, 14 Sep 2021 05:50:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=jbHyGrMlok17SW/pWY9FgQdMybgrvAFwKYR5B7F6db4=; b=QMD64R+31/coEtekDEor0Nincgb7o+ayPS42KqbcujGkUtmI0/uoIEdxiXGclE1enb sVZy+GLgaHkAHbRLaWEkSvjlRRgRhNLb67Vz4zF0Lt5upggejV1KajI1w8vCyAl4sE+o XIM+VZqHmDOq1VnyirHtuxd67UmskOLgTnSAHjPFZixs915AE2P7qkQ9ugJ03grL8f/6 Uc2omXwbjUP+F4SpimB8zvb9IGn/G69w0AGlcyPqerp071DgD8Uk2YDVH8tdjA0hZ0cc 1Sn2PZsA5cAvVZNycYeQM8k4lWJRcqIwE1XDDI6jCsTJZV2ynv4JjU+P/7cQuwD1liW1 qqnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jbHyGrMlok17SW/pWY9FgQdMybgrvAFwKYR5B7F6db4=; b=FoEDa/Ha5Z86ZVUB8vMxIELS3reS+of7JSNH2YTHJHLo46JN0HjI6WQ5tz+8QLyQrh asyo8QQuvLn58mlS3UyUDbQiJ7Y4x/Xq8+tb5MCXsV13dGJGjtVaXK/B7vBKkebNo42g HNKwyIZ0h7SRHCIMNYNTSK/YN9VvhxCp82QThAgYYjRtc4iw6QQu44Szhbq/KhohB7Lt FuV1ytnxP5QH33AWBgg7hSRe9Kie7mUmjFnJNH3m7LU0ALg2+1Sx7YmeLi2pyPv9UyJA F1xiGIiHZcDlWn4wxnJFk8jv3wcGWqc0ytAUHvHHMwncbPSRw8zRbxu/DiwypxccK6Zs 3M5w== X-Gm-Message-State: AOAM530ykp0Nmhr/J8Zznl5chdlMra9gHXODC1Yz+GgdMANXZ54DdBVl 0qpv8+4dhKNusYCyFhE7/WRTvSKGQQg= X-Google-Smtp-Source: ABdhPJy7+T2+RqH4S4WpL+EKA1RQLJbrfjNbDnyOKKamZ4fblt1iNaopg5KpxDOyUchcrbajoh8fEA== X-Received: by 2002:aa7:da41:: with SMTP id w1mr17670680eds.344.1631623849310; Tue, 14 Sep 2021 05:50:49 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:49 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Subject: [PATCH 12/13] checkpolicy: print warning on source line overflow Date: Tue, 14 Sep 2021 14:48:27 +0200 Message-Id: <20210914124828.19488-13-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org In case the source line value overflows or has a too big value in the source policy print a warning. policy_scan.l:273:19: runtime error: implicit conversion from type 'int' of value -2 (32-bit, signed) to type 'unsigned long' changed the value to 18446744073709551614 (64-bit, unsigned) policy_scan.l:66:20: runtime error: unsigned integer overflow: 18446744073709551615 + 1 cannot be represented in type 'unsigned long' Signed-off-by: Christian Göttsche --- checkpolicy/policy_scan.l | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/checkpolicy/policy_scan.l b/checkpolicy/policy_scan.l index 4067268b..129a8a2a 100644 --- a/checkpolicy/policy_scan.l +++ b/checkpolicy/policy_scan.l @@ -59,12 +59,17 @@ alnum [a-zA-Z0-9] hexval [0-9A-Fa-f] %% -\n.* { strncpy(linebuf[lno], yytext+1, 255); - linebuf[lno][254] = 0; - lno = 1 - lno; - policydb_lineno++; - source_lineno++; - yyless(1); } +\n.* { + strncpy(linebuf[lno], yytext+1, 255); + linebuf[lno][254] = 0; + lno = 1 - lno; + policydb_lineno++; + if (source_lineno == ULONG_MAX) + yywarn("source line number overflow"); + else + source_lineno++; + yyless(1); + } CLONE | clone { return(CLONE); } COMMON | @@ -270,7 +275,13 @@ GLBLUB { return(GLBLUB); } {hexval}{0,4}":"{hexval}{0,4}":"({hexval}|[:.])* { return(IPV6_ADDR); } {digit}+(\.({alnum}|[_.])*)? { return(VERSION_IDENTIFIER); } #line[ ]1[ ]\"[^\n]*\" { set_source_file(yytext+9); } -#line[ ]{digit}+ { source_lineno = atoi(yytext+6)-1; } +#line[ ]{digit}+ { + errno = 0; + source_lineno = strtoul(yytext+6, NULL, 10) - 1; + if (errno) { + yywarn("source line number too big"); + } + } #[^\n]* { /* delete comments */ } [ \t\f]+ { /* delete whitespace */ } "==" { return(EQUALS); } From patchwork Tue Sep 14 12:48:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_G=C3=B6ttsche?= X-Patchwork-Id: 12493121 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B47D8C433FE for ; Tue, 14 Sep 2021 12:50:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9B68E60F58 for ; Tue, 14 Sep 2021 12:50:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233026AbhINMwJ (ORCPT ); Tue, 14 Sep 2021 08:52:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43120 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233001AbhINMwI (ORCPT ); Tue, 14 Sep 2021 08:52:08 -0400 Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5C46DC061574 for ; Tue, 14 Sep 2021 05:50:51 -0700 (PDT) Received: by mail-ed1-x52e.google.com with SMTP id t6so18301848edi.9 for ; Tue, 14 Sep 2021 05:50:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8Rsk95+j2kBdsvDB7iVlc79S0zZ58HTgFew6DTB9SyQ=; b=TRlEb2geos3vU9ysoWQSX8+nkMI4q9ySX6bxq764A2dFtCfo/vmrYHE76R63KR1Nm4 rhp+RIzNduyQrm7ZiyUNmbCP2lsyr3HvK17wMrsyRps9GND/wmMVPdnoAlRTRnH554sA Wb9t91UupXKn1eFqtXVvOqcEh9e2FT+W0wsvYDZuOauohx+Jrhw8Xh+cBJs+gclSvhCZ 0CfDgxrIKamY10q1LuxH6djOyeDMhULDIuOVVk8ZbsqRDv8CAZlFjKbgIrqjxiUwkq+F wNTYIZ96Fh0KlRgj+KadP8F6hFq78j8v+IDkc8VWyP1NlOI6eY1AMRglFVDcKeYYoiTo dJWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8Rsk95+j2kBdsvDB7iVlc79S0zZ58HTgFew6DTB9SyQ=; b=B/7ux83Ai51045kEctq8O6tgce2fVXL+68+XTa5/jbfTJGpaPSABh+taZToZmgGpu1 mr5AivjZWKMM+QCRxt3hB71mOh6CyWDl8gG2OXS2+nyUWca7hdVWu72HIA/5RIDIG8pR 3QdXsEvmgvvcsVfRlhIb+p67CA562UF24RCXB1oYbdtW2sRYbBRv1TVKaNw87EKqBwcf +1Wjb6PDzSrxasI9+2mf+2H3wwEHmJ2SyvHlW4A5gXNFbnV5vc74x1F9V0N9BGzrv9VH xuMGAE97SyVtjhP4PqgNjWZ68HFjk1Vze/KJuZJkC3pkPGnjjE1PmQNyi86qYGotC4dh ETWw== X-Gm-Message-State: AOAM530QfFsZGRoG2tDlXE5S6bjAPEQwnW92v1HcfXdkFrLAuya/3+wt Gp8vA09pdnVeQwxikfMfUO1Ho91QfGM= X-Google-Smtp-Source: ABdhPJwtEWTPsvCE764nWdvzTf8fmpzr0SvUlys+QZm1bcOmCjSJRFsl/VNtOdFzYWfka4bSIHUsBw== X-Received: by 2002:aa7:c988:: with SMTP id c8mr12849731edt.105.1631623849933; Tue, 14 Sep 2021 05:50:49 -0700 (PDT) Received: from debianHome.localdomain (dynamic-077-003-237-250.77.3.pool.telefonica.de. [77.3.237.250]) by smtp.gmail.com with ESMTPSA id r8sm5567865eds.39.2021.09.14.05.50.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 05:50:49 -0700 (PDT) From: =?utf-8?q?Christian_G=C3=B6ttsche?= To: selinux@vger.kernel.org Cc: liwugang Subject: [PATCH 13/13] checkpolicy: free extended permission memory Date: Tue, 14 Sep 2021 14:48:28 +0200 Message-Id: <20210914124828.19488-14-cgzones@googlemail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914124828.19488-1-cgzones@googlemail.com> References: <20210914124828.19488-1-cgzones@googlemail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org define_te_avtab_xperms_helper() allocates memory for the avrule, while define_te_avtab_ioctl() does not transfer any ownership of it. Free the affected memory. Direct leak of 272 byte(s) in 2 object(s) allocated from: #0 0x49bb8d in __interceptor_malloc (./checkpolicy/checkmodule+0x49bb8d) #1 0x4f379c in define_te_avtab_xperms_helper ./checkpolicy/policy_define.c:2047:24 #2 0x4f379c in define_te_avtab_extended_perms ./checkpolicy/policy_define.c:2469:6 #3 0x4cf417 in yyparse ./checkpolicy/policy_parse.y:494:30 #4 0x4eaf35 in read_source_policy ./checkpolicy/parse_util.c:63:6 #5 0x50cccd in main ./checkpolicy/checkmodule.c:278:7 #6 0x7fbfa455ce49 in __libc_start_main csu/../csu/libc-start.c:314:16 Direct leak of 32 byte(s) in 2 object(s) allocated from: #0 0x49bb8d in __interceptor_malloc (./checkpolicy/checkmodule+0x49bb8d) #1 0x4f4a38 in avrule_sort_ioctls ./checkpolicy/policy_define.c:1844:12 #2 0x4f4a38 in avrule_ioctl_ranges ./checkpolicy/policy_define.c:2021:6 #3 0x4f4a38 in define_te_avtab_ioctl ./checkpolicy/policy_define.c:2399:6 #4 0x4f4a38 in define_te_avtab_extended_perms ./checkpolicy/policy_define.c:2475:7 #5 0x4cf417 in yyparse ./checkpolicy/policy_parse.y:494:30 #6 0x4eaf35 in read_source_policy ./checkpolicy/parse_util.c:63:6 #7 0x50cccd in main ./checkpolicy/checkmodule.c:278:7 #8 0x7fbfa455ce49 in __libc_start_main csu/../csu/libc-start.c:314:16 Reported-by: liwugang Signed-off-by: Christian Göttsche --- checkpolicy/policy_define.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/checkpolicy/policy_define.c b/checkpolicy/policy_define.c index c71e0571..185d5704 100644 --- a/checkpolicy/policy_define.c +++ b/checkpolicy/policy_define.c @@ -2390,7 +2390,7 @@ static int avrule_cpy(avrule_t *dest, const avrule_t *src) static int define_te_avtab_ioctl(const avrule_t *avrule_template) { avrule_t *avrule; - struct av_ioctl_range_list *rangelist; + struct av_ioctl_range_list *rangelist, *r; av_extended_perms_t *complete_driver, *partial_driver, *xperms; unsigned int i; @@ -2448,6 +2448,12 @@ done: if (partial_driver) free(partial_driver); + while (rangelist != NULL) { + r = rangelist; + rangelist = rangelist->next; + free(r); + } + return 0; } @@ -2456,6 +2462,7 @@ int define_te_avtab_extended_perms(int which) char *id; unsigned int i; avrule_t *avrule_template; + int rc = 0; if (pass == 1) { for (i = 0; i < 4; i++) { @@ -2471,15 +2478,17 @@ int define_te_avtab_extended_perms(int which) id = queue_remove(id_queue); if (strcmp(id,"ioctl") == 0) { - free(id); - if (define_te_avtab_ioctl(avrule_template)) - return -1; + rc = define_te_avtab_ioctl(avrule_template); } else { yyerror("only ioctl extended permissions are supported"); - free(id); - return -1; + rc = -1; } - return 0; + + free(id); + avrule_destroy(avrule_template); + free(avrule_template); + + return rc; } static int define_te_avtab_helper(int which, avrule_t ** rule)