Package: gdisk
Version: 0.8.10-2
Severity: important
Dear Maintainer,
Valgrind complains that lastUsableLBA may be evaluated in a
conditional in GPTData::MoveSecondHeaderToEnd() before being
initialized without this change:
==5124== Conditional jump or move depends on uninitialised value(s)
==5124==at 0x171AB4: GPTData::MoveSecondHeaderToEnd() (gpt.cc:1896)
==5124==by 0x16BFC7: GPTData::SetGPTSize(unsigned int, int) (gpt.cc:1739)
==5124==by 0x16BB4F: GPTData::GPTData() (gpt.cc:83)
==5124==by 0x150B3B: ::Main() (main.cc:32)
==5124==by 0x150CEB: main (main.cc:49)
Since the stack trace that contains undefined behavior is invoked
via the constructor, initialize the lastUsableLBA parameter there.
Thanks,
Alison Chaiken
Peloton Technology
-- System Information:
Debian Release: 8.9
APT prefers oldstable-updates
APT policy: (500, 'oldstable-updates'), (500, 'oldstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)
Versions of packages gdisk depends on:
ii libc6 2.19-18+deb8u10
ii libgcc1 1:4.9.2-10
ii libncursesw5 5.9+20140913-1+b1
ii libpopt0 1.16-10
ii libstdc++64.9.2-10
ii libtinfo5 5.9+20140913-1+b1
ii libuuid1 2.25.2-6
Versions of packages gdisk recommends:
ii groff-base 1.22.2-8
gdisk suggests no packages.
-- no debconf information
>From b64474852e9b86f7df322929ee6310668a930037 Mon Sep 17 00:00:00 2001
From: Alison Chaiken
Date: Thu, 7 Sep 2017 11:57:33 -0700
Subject: [PATCH] gdisk: prevent undefined behavior by initializing variable
Valgrind complains that lastUsableLBA may be evaluated in a
conditional in GPTData::MoveSecondHeaderToEnd() before being
initialized without this change:
==5124== Conditional jump or move depends on uninitialised value(s)
==5124==at 0x171AB4: GPTData::MoveSecondHeaderToEnd() (gpt.cc:1896)
==5124==by 0x16BFC7: GPTData::SetGPTSize(unsigned int, int) (gpt.cc:1739)
==5124==by 0x16BB4F: GPTData::GPTData() (gpt.cc:83)
==5124==by 0x150B3B: ::Main() (main.cc:32)
==5124==by 0x150CEB: main (main.cc:49)
Since the stack trace that contains undefined behavior is invoked
via the constructor, initialize the lastUsableLBA parameter there.
Signed-off-by: Alison Chaiken
---
third_party/gdisk/gpt.cc | 2 ++
1 file changed, 2 insertions(+)
diff --git a/third_party/gdisk/gpt.cc b/third_party/gdisk/gpt.cc
index d0a46c6..54e3f5f 100644
--- a/third_party/gdisk/gpt.cc
+++ b/third_party/gdisk/gpt.cc
@@ -79,6 +79,7 @@ GPTData::GPTData(void) {
beQuiet = 0;
whichWasUsed = use_new;
mainHeader.numParts = 0;
+ mainHeader.lastUsableLBA = 0;
numParts = 0;
SetGPTSize(NUM_GPT_ENTRIES);
// Initialize CRC functions...
@@ -103,6 +104,7 @@ GPTData::GPTData(string filename) {
beQuiet = 0;
whichWasUsed = use_new;
mainHeader.numParts = 0;
+ mainHeader.lastUsableLBA = 0;
numParts = 0;
// Initialize CRC functions...
chksum_crc32gentab();
--
2.1.4