@xnox Well, initially I was also a bit puzzled noticing that not the standalone 
htslib is used, but an embedded htslib in bedtools.
But this is also upstream the case and htslib is not the only component that is 
bundled:
$ ls ./src/utils/
BamTools            BlockedIntervals  fileType    lineFileUtilities  tabFile
BamTools-Ancillary  chromsweep        general     NewChromsweep      ToolBase
bedFile             Contexts          GenomeFile  Point              VectorOps
bedFilePE           driver            gzstream    RecordOutputMgr    version
bedGraphFile        Fasta             htslib      sequenceUtilities
BinTree             FileRecordTools   KeyListOps  stringUtilities
And solving the situation for all of these will be a nighmare with a high risk 
of introducing problems on top and more difficulties on maintaining and making 
sure that the components are in place in the correct version ...

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to zlib in Ubuntu.
https://bugs.launchpad.net/bugs/1961427

Title:
  zlib: compressBound() returns an incorrect result on z15

Status in Ubuntu on IBM z Systems:
  Incomplete
Status in bedtools package in Ubuntu:
  New
Status in zlib package in Ubuntu:
  Incomplete
Status in bedtools source package in Focal:
  New
Status in zlib source package in Focal:
  New
Status in bedtools source package in Impish:
  New
Status in zlib source package in Impish:
  New
Status in bedtools source package in Jammy:
  New
Status in zlib source package in Jammy:
  Incomplete

Bug description:
  SRU Justification:
  ==================

  [Impact]

  * zlib: compressBound() returns an incorrect result on IBM z15
  hardware.

  * Passing the result of compressBound() to compress() results
    in an error code.

  * This is because compressBound() is not adjusted for DFLTCC.

  [Fix]

  * Adjust compressBound() for DFLTCC like it's already done
    for deflateBound().

  * Since zlib project does not accept patches at the moment,
    the fix has been integrated into the DFLTCC pull request:
    https://github.com/madler/zlib/pull/410
    The commitid is b25781e735363e04f6c56e21431c47e4afc50b17.

  * The fix extracted out of the above is:
    
https://launchpadlibrarian.net/589857296/debdiff_zlib_1.2.11.dfsg-2ubuntu7_to_zlib_1.2.11.dfsg-2ubuntu8_jammy.diff

  [Test Plan]

  * An IBM z15 system (LPAR, z/VM guest or KVM virtual machine)
    with Ubuntu Server 21.10 (or 22.04).

  * A test can be done  based on the following C test program:
        #include <assert.h>
        #include <stdlib.h>
        #include <zlib.h>
        int main() {
            Bytef in_buf[128], out_buf[1024];
            for (size_t i = 0; i < sizeof(in_buf); i++)
                in_buf[i] = rand();
            uLongf dest_len = compressBound(sizeof(in_buf));
            assert(dest_len <= sizeof(out_buf));
            int ret = compress(out_buf, &dest_len,
                               in_buf, sizeof(in_buf));
            assert(ret == Z_OK);
            }

  * The test needs to be done by IBM, due to the requirements
    for the special z15 hardware.

  * A successful test was just completed, based on the version in jammy-
  proposed, which is at the same code level that the impish version this
  SRU is targeted for.

  [Where problems could occur]

  * If the adjustment of compressBound() for DFLTCC is done
    erroneously the issue can still be present or in worst case
    even affect Z systems other than z15 only.

  * The compression can become errorneous with the new changes,
    e.g. in compressBound.

  * Mistakes in dfltcc_free_window OF and especially DEFLATE_BOUND_COMPLEN,
    (incl. the bit definitions), may cause various and unforseen defects.

  * Any build time issues that might have been introduced by this patch
    can be identified by a test build; this was done and is available here:
    https://launchpad.net/~fheimes/+archive/ubuntu/lp1961427

  [Other Info]

  * Ubuntu jammy, impish and focal are affected.
  __________

  Description:   zlib: compressBound() returns an incorrect result on z15
  Symptom:       Passing the result of compressBound() to compress()
                 results in an error code.
  Problem:       compressBound() is not adjusted for DFLTCC.
  Solution:      Adjust compressBound() for DFLTCC like it's already done
                 for deflateBound(). Since zlib project does not accept
                 patches at the moment, the fix has been integrated into
                 the DFLTCC pull request:
                 https://github.com/madler/zlib/pull/410
                 The commitid is b25781e735363e04f6c56e21431c47e4afc50b17.

  Reproduction:  z15 only:
                 #include <assert.h>
                 #include <stdlib.h>
                 #include <zlib.h>
                 int main() {
                     Bytef in_buf[128], out_buf[1024];
                     for (size_t i = 0; i < sizeof(in_buf); i++)
                         in_buf[i] = rand();
                     uLongf dest_len = compressBound(sizeof(in_buf));
                     assert(dest_len <= sizeof(out_buf));
                     int ret = compress(out_buf, &dest_len,
                                        in_buf, sizeof(in_buf));
                     assert(ret == Z_OK);
                 }

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/1961427/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to