From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1kOpMt-0003Rn-LM for mharc-grub-devel@gnu.org; Sat, 03 Oct 2020 17:47:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48452) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kOpMs-0003RF-CF for grub-devel@gnu.org; Sat, 03 Oct 2020 17:47:02 -0400 Received: from mail-oo1-xc41.google.com ([2607:f8b0:4864:20::c41]:36444) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kOpMp-0002Jh-8x for grub-devel@gnu.org; Sat, 03 Oct 2020 17:47:01 -0400 Received: by mail-oo1-xc41.google.com with SMTP id z1so1301884ooj.3 for ; Sat, 03 Oct 2020 14:46:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=efficientek-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Cj+AmP+LFKIWzNN6bgn9WM/cImIWYs2jAZqOmVlRrVs=; b=sl6EW52xCFPFEBXTmQRSX8Gw3jhMVJSWCE3OQCcJKbw4gQSYjtohdXu8r3bnkWfdSr rBIXY1PBTAgQYEEB6I3MIiLci66/cSRlEvAuryYe6lbgmriNTuIyPMt+O2tkluy1Bu62 XL0/pksCO0FsSSrxn20GRzgQz5ioMrD7vQcMRg17gQd5QK+ZcUFCZQ8t3TMdfvGGtp7N sYlZD+7G+5q0a0jlo/q5iw8Z64fcSWlDLXfWvwAJe0AVU4JwBvhs6HP4j1AUPL5ayGsB 1OX4IIy+4oJNaAs5c5t6UU3a+4Wg/F0kam1grWUvwPxpEVjEi6q5k5xR2XNIcWmCHp3k znZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Cj+AmP+LFKIWzNN6bgn9WM/cImIWYs2jAZqOmVlRrVs=; b=sVWoqX3sB+PpBiBXS/ZSSlBuyfuylq1bxqsNqgt1r9aC9oYzovo4L3o6glYVWqEsxg ceq5SWbW9GFWV7Q+kENR4lrVaSTVEQXs1Cs4IQO2zvh9EZH7tgzYUB9aXd8ZInACKoIu VZ3em3iib3v+Z7nQG/P+0e++nEdx8g448Z9uwqpyJ/ssCwmRGfwqT/QARGzI9iH4LFqz YCuVbkpLJ5B2CvU941Lt15+p/Zc15ggXKLzUFCkrLMfoXFtAVC4gUtJwyadPI/4QMrXj CPelJBlE1OcHMjqRFd1QXZKPWV1GMk+JIXwmjblyV03TYpicKl3ntIBEP+GoykbT0xlf eWPg== X-Gm-Message-State: AOAM53177ybyivb5KNTnJwkxUq4fsbYj/eBr+J7UVEPYtWb6eumtUHhT 9nypm/6FEUzFnvYZLHdMC73LNyVFMOaQlQ== X-Google-Smtp-Source: ABdhPJzG5yRcuvHkr3lHiiRvfUA+E9awES8t3P20dDIoo5GNmPKgMmA7wsxSaIiyBE9MgDwlnT7DBg== X-Received: by 2002:a4a:1dc3:: with SMTP id 186mr6794445oog.88.1601761617802; Sat, 03 Oct 2020 14:46:57 -0700 (PDT) Received: from crass-HP-ZBook-15-G2.lan ([136.49.44.103]) by smtp.gmail.com with ESMTPSA id f26sm1495415otq.50.2020.10.03.14.46.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 Oct 2020 14:46:57 -0700 (PDT) From: Glenn Washburn To: grub-devel@gnu.org Cc: Daniel Kiper , Patrick Steinhardt , Glenn Washburn Subject: [PATCH 01/10] luks2: Fix use of incorrect index and some grub_error() messages. Date: Sat, 3 Oct 2020 16:45:54 -0500 Message-Id: <80dd653c989818e86f219cbfc83be9115c06ccd2.1601760922.git.development@efficientek.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2607:f8b0:4864:20::c41; envelope-from=development@efficientek.com; helo=mail-oo1-xc41.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=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: Sat, 03 Oct 2020 21:47:02 -0000 When looping over the digests and segments, the loop variable is j, but the variable i is used to index in the the digests and segments json array. The variable i is the keyslot index. Similarly, there are several grub_error() statements using the wrong index in constructing the error string. Signed-off-by: Glenn Washburn --- grub-core/disk/luks2.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/grub-core/disk/luks2.c b/grub-core/disk/luks2.c index 31d7166fc..2241e0312 100644 --- a/grub-core/disk/luks2.c +++ b/grub-core/disk/luks2.c @@ -275,34 +275,34 @@ luks2_get_keyslot (grub_luks2_keyslot_t *k, grub_luks2_digest_t *d, grub_luks2_s return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not get digests"); for (j = 0; j < size; j++) { - if (grub_json_getchild (&digest, &digests, i) || + if (grub_json_getchild (&digest, &digests, j) || grub_json_getchild (&digest, &digest, 0) || luks2_parse_digest (d, &digest)) - return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse digest %"PRIuGRUB_SIZE, i); + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse digest %"PRIuGRUB_SIZE, j); if ((d->keyslots & (1 << idx))) break; } if (j == size) - return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No digest for keyslot %"PRIuGRUB_SIZE); + return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No digest for keyslot %"PRIuGRUB_SIZE, i); /* 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 = 0; j < size; j++) + for (i = j, j = 0; j < size; j++) { - if (grub_json_getchild (&segment, &segments, i) || + if (grub_json_getchild (&segment, &segments, j) || grub_json_getuint64 (&idx, &segment, NULL) || grub_json_getchild (&segment, &segment, 0) || luks2_parse_segment (s, &segment)) - return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse segment %"PRIuGRUB_SIZE, i); + return grub_error (GRUB_ERR_BAD_ARGUMENT, "Could not parse segment %"PRIuGRUB_SIZE, j); if ((d->segments & (1 << idx))) break; } if (j == size) - return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No segment for digest %"PRIuGRUB_SIZE); + return grub_error (GRUB_ERR_FILE_NOT_FOUND, "No segment for digest %"PRIuGRUB_SIZE, i); return GRUB_ERR_NONE; } -- 2.27.0