← Back to team overview

group.of.nepali.translators team mailing list archive

[Bug 1547060] Re: cant use -d switch

 

This bug was fixed in the package tgt - 1:1.0.63-1ubuntu2

---------------
tgt (1:1.0.63-1ubuntu2) yakkety; urgency=medium

  * debian/patches/util_strtoull_errno.patch by Stas Sergeev
    - Fix errno handling for number * parsing (LP: #1547060)

 -- Ryan Harper <ryan.harper@xxxxxxxxxxxxx>  Thu, 21 Apr 2016 09:13:09
-0500

** Changed in: tgt (Ubuntu)
       Status: Fix Committed => Fix Released

-- 
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1547060

Title:
  cant use -d switch

Status in tgt package in Ubuntu:
  Fix Released
Status in tgt source package in Xenial:
  Fix Committed
Status in tgt package in Debian:
  New

Bug description:
  [Impact]

   * Users of tgt who wish to make use of the server command line options:
     -d,--debug , -t,--nr_iothreads, -C,--control-port will fail due to
     an option parsing error.  This prevents users from exercising
     additional control of the tgtd, regressing the capabilities of tgtd.

     This affects the 1.0.63 release of tgt and is not yet fixed upstream.
     Patches have been sumitted.
     
   * Backporting fixes from upstream release is required to ensure
     users of tgtd can exercise all capabilities, including enabling
     debugging and other features previously available to tgt users.

   * The patch fixes a misuderstanding of the use of errno after calling
     the strtoull libc call.  Errno is not set in all cases for strtoull
     so extra checks must be used to determine if the current value of
     errno is related to the strtoull call.

  [Test Case]

   * On a Xenial 16.04 system
      1. lxd init
      2. lxc launch ubuntu-daily:xenial x1
      3. lxc exec x1 -- /bin/bash -c 'apt-get update && apt-get -y install tgt && tgtd -d1; echo $?'

      # On FAILURE: return code will be non-zero with the following
  output

      -d argument value '1' invalid
      Try `tgtd --help' for more information.
      22

      # After installing the newer tgt package, return code will be 0

  [Regression Potential]

   * Unlikely any new regressions will take place as the current package
     prevents users from using portions of tgtd due to not being able to
     pass numeric values to tgtd options.

  [Other Info]
   * Debian Bug filed:
     - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=822160
   * Upstream request to accept patch
     - http://article.gmane.org/gmane.linux.stgt/535

  
  [Original Description]
  tgt-1:1.0.62-1ubuntu2

  # ./tgtd -d 1
  -d argument value '1' invalid
  Try `tgtd --help' for more information.

  The following change should fix the problem:

  --- util.h.old  2015-12-02 03:27:15.000000000 +0300
  +++ util.h      2016-02-18 18:04:08.749932076 +0300
  @@ -148,7 +148,7 @@
          unsigned long long ull_val;                     \
          ull_val = strtoull(str, &ptr, 0);               \
          val = (typeof(val)) ull_val;                    \
  -       if (errno || ptr == str)                        \
  +       if (ull_val == ULONG_MAX || ptr == str)         \
                  ret = EINVAL;                           \
          else if (val != ull_val)                        \
                  ret = ERANGE;                           \

  Here, the errno is checked incorrectly: you can't check
  errno unless the returned value allows you to. In case
  of strtoull(), errno should be checked only if ULONG_MAX is
  returned.
  I however can't test the fix properly because when compiled
  from source, the bug doesn't happen. The value of errno is
  unspecified, and it just happens to be 0 when I compile from
  sources.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/tgt/+bug/1547060/+subscriptions