Bug#876393: gdisk: valgrind reports conditional evaluation depends on unitialized variable

2022-04-10 Thread Rod Smith
Thanks for the patch! I've just added it to the GPT fdisk git repository:

https://sourceforge.net/p/gptfdisk/code/ci/8ff360f49eda175142e01d46edbb494cfebe309d/

(I expect to do a new release soon, FWIW.)

-- 
Rod Smith
rodsm...@rodsbooks.com
http://www.rodsbooks.com



Bug#876393: gdisk: valgrind reports conditional evaluation depends on unitialized variable

2017-09-21 Thread Alison Chaiken
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