bug-parted
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [parted-devel] [Parted-maintainers] Debian Bug #578097: No support f


From: Jim Meyering
Subject: Re: [parted-devel] [Parted-maintainers] Debian Bug #578097: No support for CMS-formatted disks
Date: Thu, 25 Nov 2010 16:49:06 +0100

Stephen Powell wrote:
...
> In the process of checking out the results, I discovered a bug in my code.
> In include/parted/vtoc.h, at or near line 105, as part of the structure
> declaration for ldl_volume_label, there is a line that says
>
>         char ldl_version;       /* Version number, valid for ldl format      
> */
>
> It should say
>
>         char ldl_version[1];    /* Version number, valid for ldl format      
> */
>
> I was clued into this by a bunch of compile warnings in 
> libparted/labels/dasd.c
> complaining about conversion of integer to pointer without a cast,
> or something like that.

Hi Stephen,

Thanks for the fix.
Until today I had not compiled your changes on an s390x.
When I did, there were 3 other minor problems, addressed
by the patch below, just after the one you suggested.

That got past "make check" as a non-privileged user.
However, running "make check" as root exercises several
other cases that cannot be tested as a regular user, and
at least two of those are failing.  Those failures
are not due to your changes, so as soon as I have
a test or two to exercise your changes I'll feel
comfortable pushing the result.  I expect to use
the same mechanism as used in a few other tests
whereby you specify a device and its size like this:

    sudo make check DEVICE_TO_ERASE=/dev/sdd DEVICE_TO_ERASE_SIZE=999MB

But it won't be this weekend, so maybe next week...


>From a0fd447e13ec76fa16a51bfd88b67af705d08c05 Mon Sep 17 00:00:00 2001
From: Stephen Powell <address@hidden>
Date: Thu, 25 Nov 2010 15:52:21 +0100
Subject: [PATCH 1/2] tweak ldl_version member decl

* include/parted/vtoc.h [struct ldl_volume_label] (ldl_version):
Declare as array of length 1, not as a scalar.
---
 include/parted/vtoc.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/parted/vtoc.h b/include/parted/vtoc.h
index 5ed40b5..d79ce39 100644
--- a/include/parted/vtoc.h
+++ b/include/parted/vtoc.h
@@ -102,7 +102,7 @@ struct __attribute__ ((packed)) ldl_volume_label {
        char vollbl[4];         /* Label identifier ("LNX1" in EBCDIC)       */
         char volid[6];          /* Volume identifier                         */
         char res3[69];          /* Reserved field                            */
-        char ldl_version;       /* Version number, valid for ldl format      */
+        char ldl_version[1];    /* Version number, valid for ldl format      */
         u_int64_t formatted_blocks;  /* valid when ldl_version >= "2" (in
                                         EBCDIC)                              */
 };
--
1.7.3.2.765.g642a8


>From 668956027eebd9204e486fdd75e67a981ead5ac5 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Thu, 25 Nov 2010 15:57:00 +0100
Subject: [PATCH 2/2] s390: avoid warnings

* libparted/labels/vtoc.c (vtoc_read_volume_label): Remove decl
of unused var.
* libparted/labels/fdasd.c (fdasd_valid_vtoc_pointer): Return
a value also when successful.
* libparted/labels/dasd.c (dasd_alloc_metadata): Initialize "part"
to NULL solely to avoid a spurious used-uninitialized warning.
---
 libparted/labels/dasd.c  |    2 +-
 libparted/labels/fdasd.c |    1 +
 libparted/labels/vtoc.c  |    1 -
 3 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libparted/labels/dasd.c b/libparted/labels/dasd.c
index 8114347..bca1662 100644
--- a/libparted/labels/dasd.c
+++ b/libparted/labels/dasd.c
@@ -906,7 +906,7 @@ dasd_alloc_metadata (PedDisk* disk)
        PedSector vtoc_end;
        LinuxSpecific* arch_specific;
        DasdDiskSpecific* disk_specific;
-       PedPartition* part;
+       PedPartition* part = NULL; /* initialize solely to placate gcc */
        PedPartition* new_part2;
        PedSector trailing_meta_start, trailing_meta_end;
        struct fdasd_anchor anchor;
diff --git a/libparted/labels/fdasd.c b/libparted/labels/fdasd.c
index 8da7b1f..6d708f6 100644
--- a/libparted/labels/fdasd.c
+++ b/libparted/labels/fdasd.c
@@ -707,6 +707,7 @@ fdasd_valid_vtoc_pointer(fdasd_anchor_t *anc, unsigned long 
b, int fd)
                return 0;

        fdasd_error(anc, wrong_disk_format, _("Invalid VTOC."));
+       return 1;
 }

 /*
diff --git a/libparted/labels/vtoc.c b/libparted/labels/vtoc.c
index dab5181..cf2990e 100644
--- a/libparted/labels/vtoc.c
+++ b/libparted/labels/vtoc.c
@@ -290,7 +290,6 @@ vtoc_read_volume_label (int f, unsigned long vlabel_start,
        bogus_label_t *bogus_ptr = &mybogus;
        vollabel_t *union_ptr = &bogus_ptr->actual_label;
        volume_label_t *cdl_ptr = &union_ptr->cdl;
-       cms_volume_label_t *cms_ptr = &union_ptr->cms;

        PDEBUG
        int rc;
--
1.7.3.2.765.g642a8



reply via email to

[Prev in Thread] Current Thread [Next in Thread]