Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3410250pxf; Mon, 29 Mar 2021 01:11:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxYL+W6gPLvROhi8TVvJazmXxA4/jbtbm6i7/fkVJ0rgMDaRaqzMe9nwMA6vJyQksHAqOGT X-Received: by 2002:a50:ec0e:: with SMTP id g14mr27663244edr.264.1617005495977; Mon, 29 Mar 2021 01:11:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617005495; cv=none; d=google.com; s=arc-20160816; b=BEfEyB4EqT9O5rY7i23itBmt1k1beqUnDEukoGsyXlmorBsn8wD1omx0i/SOvv8o9h etQHTu+NlDRdNq9FLks7P40vYh7ji+h5lfyawKwrRnU9ud+oNNBhbf/BM5RvKrSg+lF7 m3LAEopninnGwrSPSDIC8iYsHQ+sR+pOoS86pqfjMkKSZRzAkBwh/59achM6p7n8UBxg 4PDaC8GKzYrgQkUoESJa98JYd0OASy9LrbQ8H3TsqucaLULclxvarH+cH93000vl4Iih Cy61KB+3H09SEny1sCIi+GtpaaSjy3l7VQAI+Hij1fQ9pO6BncGGoVjX7hpw2th4Ps8B 1fIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=/UVy6MnOnM75IJ0RMjvOsLbb2Bt56rHFIk64wWPIs6Q=; b=trCmsCmM+fSLq9i1SbvoaB9gboOKv04iU5hTf3slhrjAFgCZFQcxD0FBrFOOSXikA0 mvheW22jwFkkYnGld2pYfBJRvVFvy3gAm16LAEnWNfGPRgoDnbGN/7nS75YGlC+1+JaN yteYDJTK2EfHOYiCMxu2W7yMP7liR6EP7FZDc332JIFVkCNUHtpZiFET30cwIj5YthzE dv2EvkiSkHI0EkgPciH3imU1zlxQDyYuIuOh9yWS+D79Y9G8PQ/7dGi1o0RsQi4+lTyF 2Z0jBkpskZ98g2Xyfrr58Myj428Vy6EnMbPC6E69tATVKcG+hmqKJmh5F2GqzBdZKlmm NyLA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=VZoSECRc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h18si12233123ejk.355.2021.03.29.01.11.13; Mon, 29 Mar 2021 01:11:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=VZoSECRc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231987AbhC2IIO (ORCPT + 99 others); Mon, 29 Mar 2021 04:08:14 -0400 Received: from mail.kernel.org ([198.145.29.99]:47902 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232070AbhC2IE6 (ORCPT ); Mon, 29 Mar 2021 04:04:58 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A125261477; Mon, 29 Mar 2021 08:04:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1617005098; bh=A7Dod5oX9lcDvyzu55/c1vP1GrYr53ekQ6EyH788SmE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VZoSECRcUZVxVaCRfQ6flgiOQ+dfOHA73xDDXgslp9Fa5Zyjq0wcsJuEc0UFHT58N Kjxt2eCKhljJSiiq2X4a1CZK9N1226eGAo1az8iXBDZI9vNYNlugbOgMNz/3PbAwhs oXwvqthG5XH1r/bYrDm6WNznyr3Cygy0Ogek+VSA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sean Nyekjaer , Phillip Lougher , Andrew Morton , Linus Torvalds Subject: [PATCH 4.14 22/59] squashfs: fix inode lookup sanity checks Date: Mon, 29 Mar 2021 09:58:02 +0200 Message-Id: <20210329075609.619307635@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210329075608.898173317@linuxfoundation.org> References: <20210329075608.898173317@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sean Nyekjaer commit c1b2028315c6b15e8d6725e0d5884b15887d3daa upstream. When mouting a squashfs image created without inode compression it fails with: "unable to read inode lookup table" It turns out that the BLOCK_OFFSET is missing when checking the SQUASHFS_METADATA_SIZE agaist the actual size. Link: https://lkml.kernel.org/r/20210226092903.1473545-1-sean@geanix.com Fixes: eabac19e40c0 ("squashfs: add more sanity checks in inode lookup") Signed-off-by: Sean Nyekjaer Acked-by: Phillip Lougher Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- fs/squashfs/export.c | 8 ++++++-- fs/squashfs/squashfs_fs.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) --- a/fs/squashfs/export.c +++ b/fs/squashfs/export.c @@ -165,14 +165,18 @@ __le64 *squashfs_read_inode_lookup_table start = le64_to_cpu(table[n]); end = le64_to_cpu(table[n + 1]); - if (start >= end || (end - start) > SQUASHFS_METADATA_SIZE) { + if (start >= end + || (end - start) > + (SQUASHFS_METADATA_SIZE + SQUASHFS_BLOCK_OFFSET)) { kfree(table); return ERR_PTR(-EINVAL); } } start = le64_to_cpu(table[indexes - 1]); - if (start >= lookup_table_start || (lookup_table_start - start) > SQUASHFS_METADATA_SIZE) { + if (start >= lookup_table_start || + (lookup_table_start - start) > + (SQUASHFS_METADATA_SIZE + SQUASHFS_BLOCK_OFFSET)) { kfree(table); return ERR_PTR(-EINVAL); } --- a/fs/squashfs/squashfs_fs.h +++ b/fs/squashfs/squashfs_fs.h @@ -30,6 +30,7 @@ /* size of metadata (inode and directory) blocks */ #define SQUASHFS_METADATA_SIZE 8192 +#define SQUASHFS_BLOCK_OFFSET 2 /* default size of block device I/O */ #ifdef CONFIG_SQUASHFS_4K_DEVBLK_SIZE