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++6 4.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 <ali...@peloton-tech.com> 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 <ali...@peloton-tech.com> --- 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