From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1kFJ3f-0003Nw-1I for mharc-grub-devel@gnu.org; Mon, 07 Sep 2020 11:27:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60064) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kFJ3c-0003Ih-JQ for grub-devel@gnu.org; Mon, 07 Sep 2020 11:27:48 -0400 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]:35517) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kFJ3Z-0007Ch-Rl for grub-devel@gnu.org; Mon, 07 Sep 2020 11:27:48 -0400 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 7ED8AB71; Mon, 7 Sep 2020 11:27:44 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Mon, 07 Sep 2020 11:27:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=date :from:to:cc:subject:message-id:references:mime-version :content-type:in-reply-to; s=fm2; bh=57qw7S/ssf5GQ9+BH0sJ8fKoNZu CqyzKEd16g1JTkB0=; b=wORm2kjbzeJ6DRq4sZgESXfTaGgdS4Ogp5eKz/Cvv1n XBK9NlMqjTqghxW3XIBsywsKOtZJ7Bbu2jX9Q/vXxqkip4DybZOYYaJnT4FH6zga VnY/HDuteLigCDeaZll5wdh7U4NmqqtlrwuQ2P/z4N8tczE+Y7pCDIKbODy0eONx vrRfIaJYhjS0OTZDFy0pYXhkE3Q6xOejZxjJnU3wLfXF2mYjdzNYsHlbt7tG6jco sCAdHmJutTIgCWRPN4Jt4cmOx/HDF7mVOk4iBBGejCktuLg6+LQh/6XVkYqv1x27 pLoKIFBs82KNpQ9wXdD3bvVSfSPlvRoMe5Q7rlM1Btg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=57qw7S /ssf5GQ9+BH0sJ8fKoNZuCqyzKEd16g1JTkB0=; b=UgcHiOmIR+qCORVGwZtTM7 0p8m36Rtelu5grYdD3X1/nxmnsrytqzJluP1ddusSgrfp0D/OoIAQKtmJYmyW34Z qm4kAbJTDF806kChuM3RSPf3YYuS8r+VRmgMK42NAEStxp7d7m+iQFC6MWJfU/yN KndiriMXl+mDDbfo5mTzk9VefiGHRnBqc5Pu8f0dAdPdKN5WaJBa4PrN7VV6yl+p WGtRAid4nxJAlTS55sPT4f7fCd6AdHlENqJ1Y0+4N3o9Io/S6WadlafmnfeolKAG LE0y2t0sQ4ZhRA6KKiTTZ1aPV0TRZpZa72J9F/sBJAzNn97skgiPXD2jfmt8Czhg == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduiedrudehtddgledtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepfffhvffukfhfgggtuggjsehgtderredttddvnecuhfhrohhmpefrrghtrhhi tghkucfuthgvihhnhhgrrhguthcuoehpshesphhkshdrihhmqeenucggtffrrghtthgvrh hnpeehgefhtdefueffheekgfffudelffejtdfhvdejkedthfehvdelgfetgfdvtedthfen ucfkphepkeelrddugedrfeekrddufeegnecuvehluhhsthgvrhfuihiivgepvdenucfrrg hrrghmpehmrghilhhfrhhomhepphhssehpkhhsrdhimh X-ME-Proxy: Received: from vm-mail.pks.im (x590e2686.dyn.telefonica.de [89.14.38.134]) by mail.messagingengine.com (Postfix) with ESMTPA id 36C1E328005E; Mon, 7 Sep 2020 11:27:43 -0400 (EDT) Received: from localhost (tanuki [10.192.0.23]) by vm-mail.pks.im (OpenSMTPD) with ESMTPSA id 237e0528 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Mon, 7 Sep 2020 15:27:42 +0000 (UTC) Date: Mon, 7 Sep 2020 17:27:41 +0200 From: Patrick Steinhardt To: grub-devel@gnu.org Cc: Denis GNUtoo Carikli , Glenn Washburn , Daniel Kiper Subject: [PATCH v3 3/9] luks2: Fix use of incorrect index and some error messages Message-ID: References: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="1yeeQ81UyVL57Vl7" Content-Disposition: inline In-Reply-To: Received-SPF: pass client-ip=64.147.123.25; envelope-from=ps@pks.im; helo=wout2-smtp.messagingengine.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/07 11:26:12 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Sep 2020 15:27:48 -0000 --1yeeQ81UyVL57Vl7 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable =46rom: Glenn Washburn Signed-off-by: Glenn Washburn Reviewed-by: Patrick Steinhardt --- grub-core/disk/luks2.c | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c index e3ff7c83d..c4c6ac90c 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -255,54 +255,55 @@ luks2_parse_digest (grub_luks2_digest_t *out, const g= rub_json_t *digest) =20 static grub_err_t luks2_get_keyslot (grub_luks2_keyslot_t *k, grub_luks2_digest_t *d, grub_l= uks2_segment_t *s, - const grub_json_t *root, grub_size_t i) + const grub_json_t *root, grub_size_t keyslot_idx) { grub_json_t keyslots, keyslot, digests, digest, segments, segment; - grub_size_t j, size; - grub_uint64_t idx; + grub_size_t i, size; + grub_uint64_t keyslot_key, digest_key, segment_key; =20 /* Get nth keyslot */ if (grub_json_getvalue (&keyslots, root, "keyslots") || - grub_json_getchild (&keyslot, &keyslots, i) || - grub_json_getuint64 (&idx, &keyslot, NULL) || + grub_json_getchild (&keyslot, &keyslots, keyslot_idx) || + grub_json_getuint64 (&keyslot_key, &keyslot, NULL) || grub_json_getchild (&keyslot, &keyslot, 0) || luks2_parse_keyslot (k, &keyslot)) - return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse keyslot %"P= RIuGRUB_SIZE, i); + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse keyslot ind= ex %"PRIuGRUB_SIZE, keyslot_idx); =20 /* Get digest that matches the keyslot. */ if (grub_json_getvalue (&digests, root, "digests") || grub_json_getsize (&size, &digests)) return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not get digests"); - for (j =3D 0; j < size; j++) + for (i =3D 0; i < size; i++) { if (grub_json_getchild (&digest, &digests, i) || + grub_json_getuint64 (&digest_key, &digest, NULL) || grub_json_getchild (&digest, &digest, 0) || luks2_parse_digest (d, &digest)) - return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse digest %"PRIuG= RUB_SIZE, i); + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse digest index %= "PRIuGRUB_SIZE, i); =20 - if ((d->keyslots & (1 << idx))) + if ((d->keyslots & (1 << keyslot_key))) break; } - if (j =3D=3D size) - return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No digest for keyslot %= "PRIuGRUB_SIZE); + if (i =3D=3D size) + return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No digest for keyslot \= "%"PRIuGRUB_UINT64_T"\"", keyslot_key); =20 /* Get segment that matches the digest. */ if (grub_json_getvalue (&segments, root, "segments") || grub_json_getsize (&size, &segments)) return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not get segments"); - for (j =3D 0; j < size; j++) + for (i =3D 0; i < size; i++) { if (grub_json_getchild (&segment, &segments, i) || - grub_json_getuint64 (&idx, &segment, NULL) || + grub_json_getuint64 (&segment_key, &segment, NULL) || grub_json_getchild (&segment, &segment, 0) || luks2_parse_segment (s, &segment)) - return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse segment %"PRIu= GRUB_SIZE, i); + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse segment index = %"PRIuGRUB_SIZE, i); =20 - if ((d->segments & (1 << idx))) + if ((d->segments & (1 << segment_key))) break; } - if (j =3D=3D size) - return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No segment for digest %"P= RIuGRUB_SIZE); + if (i =3D=3D size) + return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No segment for digest \"%= "PRIuGRUB_UINT64_T"\"", digest_key); =20 return GRUB_ERR_NONE; } --=20 2.28.0 --1yeeQ81UyVL57Vl7 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEF9hrgiFbCdvenl/rVbJhu7ckPpQFAl9WUWwACgkQVbJhu7ck PpT/Lw//foKMrut6C0h7fbGTAwEghwPhgPhhlAIGO+E6KOwjlYPXcMWXit1VDRTf 2BZtceHcuNYL4nJS903BpEF0GFGwPC4YwiDXVdoz0aw+ktN7PkNYsuWmo/70wMJg KjZXAK/jSk6Q+Tc8XNx6xcNOFTgaBFsPjCc1pbRPNvfZiUrRTKfZXN43NTDN9uHo 2YSeeiDwkW2NXDyWWTmc5w/yxeSJnZJDG8b2/1A2mhwIP1VVlxFdod6vuGf4DT/Q w1hRvkmJDnvWasgEokFLVHLIqf4qzDaEK6r7laFZ6wrKh5I2TirIWMzTWG2mW9Qw +h7FrAB6eLF8lsjVaoabfPN3Hr7C0Mb531cqpUniJ5r8LxuVSmHR3NIxFEnPwdD3 +BP9H6mCvper31M4ucWx1jvqmk26f2CrU7o8IpWenU0ZNeSFOmio7lRve7zOhHvj OaQB+t+HblcniWHMGRu27eqHFG8NaGPvcJ/8RtIrz2qTyFqm17lEj8goeR193AAn kI9jNgc9x5ZcBkLBAhPRHoRlsRt4s7M9WRqbqGwAu1+197lzWHoL61sXk1EEjjib i1zqFP93vU5bwLY1u0d1sw0G0Fqxm2iriroRpnq6DF2boRLWFWWbtdL44uDXRJIi gJ79GMLmjwRv/60PLT9nhF2ZC8jo3RBtxzJf8Xkf72Zu78Ihbis= =d82B -----END PGP SIGNATURE----- --1yeeQ81UyVL57Vl7--