Thanks, Julian. I have added some more information about the autopkgtest
changes to the bug report.

Verification. test.sh is the test plan in the bug report.

root@sg3-utils:~# apt policy sg3-utils
sg3-utils:
  Installed: 1.48-3ubuntu3
  Candidate: 1.48-3ubuntu3
  Version table:
     1.48-3ubuntu3.1 100
        100 http://archive.ubuntu.com/ubuntu resolute-proposed/main amd64 
Packages
 *** 1.48-3ubuntu3 500
        500 http://archive.ubuntu.com/ubuntu resolute/main amd64 Packages
        100 /var/lib/dpkg/status
root@sg3-utils:~# bash test.sh
bad argument to '--contents='
bad argument to '--contents='
bad argument to '--contents='
bad argument to '--cfile='
root@sg3-utils:~# apt policy sg3-utils
sg3-utils:
  Installed: 1.48-3ubuntu3.1
  Candidate: 1.48-3ubuntu3.1
  Version table:
 *** 1.48-3ubuntu3.1 100
        100 http://archive.ubuntu.com/ubuntu resolute-proposed/main amd64 
Packages
        100 /var/lib/dpkg/status
     1.48-3ubuntu3 500
        500 http://archive.ubuntu.com/ubuntu resolute/main amd64 Packages
root@sg3-utils:~# bash test.sh
root@sg3-utils:~#


** Description changed:

  [ Impact ]
  
    * sg_wr_mode rejects all arguments (even if valid) to --contents= or
      --cfile=.
  
    * This impacts every usage of sg_wr_mode with --contents= or --cfile.
  
    * This used to work in Noble, and is a regression in Resolute.
  
    * The upload fixes the bug by including a patch from upstream that corrects
      the argument handling logic.
  
  [ Test Plan ]
  
   * Running the following script should output nothing.
  
  sg_wr_mode --page=8 --contents=0,1 /dev/null 2>&1 | grep 'bad argument'
  sg_wr_mode --page=8 --contents='08 12 01' /dev/null 2>&1 | grep 'bad argument'
  sg_wr_mode -p 8 -c 08,12,01 /dev/null 2>&1 | grep 'bad argument'
  
  printf '\x08\x12\x01' > /tmp/page.bin
- sg_wr_mode --page=8 --cfile=/tmp/page.bin /dev/null 2>&1 | grep 'bad argument'
+ sg_wr_mode --raw --page=8 --cfile=/tmp/page.bin /dev/null 2>&1 | grep 'bad 
argument'
  
    * Current output in Resolute:
  
  bad argument to '--contents='
  bad argument to '--contents='
  bad argument to '--contents='
  bad argument to '--cfile='
  
  [ Where problems could occur ]
  
   * Changes are isolated to argument parsing in sg_wr_mode.
  
   * Any regression would show up as other valid arguments for sg_wr_mode being
     misparsed or rejected.
  
  [ Other Info ]
  
   * This issue was fixed upstream in svn r1048, but there's no upstream release
     yet.
  
-  * The upload also fixes autopkgtests, which were failing for unrelated
+  * The upload also fixes autopkgtests, which were failing for unrelated
  reasons. Tests were previously trying to install linux-modules-
  extra-$(uname-r), which does not exist anymore. It also needed some
  adjustment handle deleting IPv6 portals (previously only deleted IPv4).
  
  [ Original Bug Description ]
  
  Package: sg3-utils 1.48-3ubuntu3
  Ubuntu: 26.04 (Resolute Raccoon)
  Binary: sg_wr_mode version "1.30 20230623"
  
  sg_wr_mode rejects every --contents= and --cfile= argument before
  opening the target device, regardless of value. The rejection fires from
  argv parsing — it's not device-specific.
  
  Repro (any of these):
  
  $ sg_wr_mode --page=8 --contents=0,1 /dev/null
  bad argument to '--contents='
  
  $ sg_wr_mode --page=8 --contents="08 12 01" /dev/null
  bad argument to '--contents='
  
  $ sg_wr_mode -p 8 -c 08,12,01 /dev/null
  bad argument to '--contents='
  
  $ printf '\x08\x12\x01' > /tmp/page.bin
  $ sg_wr_mode --page=8 --cfile=/tmp/page.bin /dev/null
  bad argument to '--cfile='
  
  Exit code: 32 in every case.
  
  strace confirms the failure is pre-I/O: libsgutils2-1.48.so.2 loads,
  then the error is written to stderr and the process exits — the device
  is never opened. So the bug is in sg_wr_mode's argv handler, not the
  underlying SCSI layer.
  
  Confirmed not device-related: same failure against /dev/sg1 (a QEMU CD-
  ROM SCSI generic device). sg_inq and sg_modes against the same device
  work normally — only sg_wr_mode's argument parser rejects --contents=.
  The sg3-utils library and the device are both healthy; the bug is
  isolated to sg_wr_mode.
  
  Workaround: issue MODE SELECT(10) directly via sg_raw, e.g.: sg_raw -v
  -s 28 -i payload.bin /dev/sgN 55 10 00 00 00 00 00 00 1C 00
  
  Expected: --contents= should accept the documented "comma-separated
  string of hex numbers (00..ff)" syntax (per the man page and --help
  text).
  
  Actual: every value is rejected.
  
  ProblemType: Bug
  DistroRelease: Ubuntu 26.04
  Package: sg3-utils 1.48-3ubuntu3
  ProcVersionSignature: Ubuntu 7.0.0-15.15-generic 7.0.0
  Uname: Linux 7.0.0-15-generic x86_64
  ApportVersion: 2.34.0-0ubuntu2
  Architecture: amd64
  CasperMD5CheckResult: pass
  Date: Sat May 9 13:59:51 2026
  InstallationDate: Installed on 2026-05-02 (7 days ago)
  InstallationMedia: Ubuntu-Server 26.04 "Resolute Raccoon" - Release amd64 
(20260420.1)
  ProcEnviron:
   LANG=en_US.UTF-8
   PATH=(custom, no user)
   SHELL=/bin/bash
   TERM=xterm-256color
   XDG_RUNTIME_DIR=<set>
  SourcePackage: sg3-utils
  UpgradeStatus: No upgrade log present (probably fresh install)

** Tags removed: verification-needed-resolute
** Tags added: verification-done-resolute

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2152092

Title:
  sg_wr_mode rejects every --contents= and --cfile= argument with "bad
  argument"

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/sg3-utils/+bug/2152092/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to