[MIR] libqrtr-glib

Bug #1963707 reported by Sebastien Bacher
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
libqrtr-glib (Ubuntu)
Fix Released
Low
Unassigned

Bug Description

[Availability]
The package libqrtr-glib is already in Ubuntu universe.
The package libqrtr-glib build for the architectures it is designed to work on.
It currently builds and works for architetcures: amd64 armhf arm64 ppc64el riscv64 s390x
Link to package https://launchpad.net/ubuntu/+source/libqrtr-glib

[Rationale]
- The package libqrtr-glib is required in Ubuntu main for modemmanager to support qualcomm modems. We current carry a delta over Debian to disable that option
- The package libqrtr-glib will be useful only to users owning such hardware but even if that's a limited set of users it's important for us to have Ubuntu supporting the available hardware.

- It would be great and useful to community/processes to have the package libqrtr-glib in Ubuntu main, but there is no definitive deadline.

[Security]
- No CVEs/security issues in this software in the past

- no `suid` or `sgid` binaries
- no executables in `/sbin` and `/usr/sbin`
- Packages does not open privileged ports (ports < 1024)
- Packages does not contain extensions to security-sensitive software

[Quality assurance - function/usage]
- The package works well right after install

[Quality assurance - maintenance]
- The package is maintained well in Debian/Ubuntu and has no bug open currently
  - Ubuntu https://bugs.launchpad.net/ubuntu/+source/libqrtr-glib/+bug
  - Debian https://bugs.debian.org/cgi-bin/pkgreport.cgi?src=libqrtr-glib

[Quality assurance - testing]
- The package runs a minimal test suite on build time, if it fails it makes the build fail, link to build log https://launchpadlibrarian.net/587268179/buildlog_ubuntu-jammy-amd64.libqrtr-glib_1.2.2-1_BUILDING.txt.gz

- There is a basic build autopkgtest for the library
https://autopkgtest.ubuntu.com/packages/libq/libqrtr-glib

- testplan

On a computer with a QRTR modem in an Ubuntu session, open the settings, check that the modem panel correctly describes the device and available SIM. Try to connect to a carrier and use the data connection.

Our Desktop and oem teams don't have access to compatible hardware at the moment to go through the testplan.

The Certification Team owns some IoT hardware with qualcomm modems though and we are working with them to see if those could be used to do our testing but the setup is somewhat challenging (available only via testflinger, the device are using UC20 and ubuntu server on focal and we can't revert the state remotely if needed. Also SIM card availability is limited).

As a result we currently are not able to commit to be able to validate the testplan on updates, but we are working on trying to resolve the situation.

We believe we have exercised the different options available to provide testing without managing to find a solution. We will keep trying to resolve the testing gap but meanwhile we would still like to request for the package to be consider because we can't provide the feature as an opt-in/in universe since it's a build option from modemmanager but not an independent plugin.

Due to the nature, integration and use cases of the package the
consequences of a regression that might slip through most likely
would be that Qualcomm modems stop working correctly.

[Quality assurance - packaging]
- debian/watch is present and works
- This package only has a minor lintian warning
- Link to recent build log including a lintian run

# lintian --pedantic
running with root privileges is not recommended!
W: libqrtr-glib source: superfluous-file-pattern debian/copyright docs/reference/meson.build (Files, line 28)

- Lintian overrides are present, but only to silent warnings about gtk-doc being outside of /usr/share/doc
- This package does not rely on obsolete or about to be demoted packages.
- This package has no python2 or GTK2 dependencies
- The package will be installed by default, but does not ask debconf questions

- Packaging and build is easy, link to d/rules https://salsa.debian.org/DebianOnMobile-team/libqrtr-glib/-/blob/debian/master/debian/rules

[UI standards]
- Application is not end-user facing (does not need translation)

[Dependencies]
- No further depends or recommends dependencies that are not yet in main

[Standards compliance]
- This package correctly follows FHS and Debian Policy

[Maintenance/Owner]
- Owning Team will be desktop-packages
- Team is not yet, but will subscribe to the package before promotion

- This does not use static builds
- This does not use vendored code

[Background information]
The Package description explains the package well
Upstream Name is libqrtr-glib
Link to upstream project https://www.freedesktop.org/software/libqmi/libqrtr-glib/

description: updated
Revision history for this message
Sebastien Bacher (seb128) wrote :

Setting as low priority and incomplete, we will eventually want it but we can disable the build option for now. The autopkgtest situation probably needs to be sort out first, also it's unclear what hardware requires it but we haven't see a demand for it yet

Changed in libqrtr-glib (Ubuntu):
importance: Undecided → Low
status: New → Incomplete
Revision history for this message
Jeremy Bícha (jbicha) wrote :

libqmi is stuck in jammy-proposed because it added a dependency on libqrtr-glib for the same reasons.

tags: added: update-excuse
tags: added: jammy
Jeremy Bícha (jbicha)
Changed in libqrtr-glib (Ubuntu):
status: Incomplete → Confirmed
status: Confirmed → Incomplete
description: updated
Changed in libqrtr-glib (Ubuntu):
status: Incomplete → New
description: updated
description: updated
Changed in libqrtr-glib (Ubuntu):
assignee: nobody → Lukas Märdian (slyon)
Revision history for this message
Lukas Märdian (slyon) wrote :
Download full text (4.0 KiB)

Review for Package: src:libqrtr-glib

[Summary]
libqrtr-glib is a glib-based library to use and manage the QRTR (Qualcomm
IPC Router) bus. It seems to be in a good shape upstream and was included in
Debian/Ubuntu just recently (2022).

MIR team ACK under the constraint to resolve the below listed
required TODOs and as much as possible having a look at the
recommended TODOs.

This does need a security review, so I'll assign ubuntu-security

List of specific binary packages to be promoted to main:
- gir1.2-qrtr-1.0, libqrtr-glib-dev, libqrtr-glib-doc, libqrtr-glib0
Specific binary packages built, but NOT to be promoted to main: <None>

Notes:
- libqrtr parses packets received from the modem, so I'm signing it up for a
  security review

Required TODOs:
#1 Can we please define a better testing story for this package?
Both automatic tests provided (build-time & autopkgtests) are only superficial.
I understand that an end-to-end test would require special HW (compatible
qualcomm modem), so we should probably define a proper test-plan to be run
manually every cycle. Can you please provide a test plan/script/log in the
comments below?

Recommended TODOs:
#2 The package should get a team bug subscriber before being promoted
#3 please run `update-maintainer` on the package (or sync once the autopkgtest
is uploaded to Debian).

[Duplication]
There is no other package in main providing the same functionality.

[Dependencies]
OK:
- no other Dependencies to MIR due to this
  - checked with check-mir
  - not listed in seeded-in-ubuntu
  - none of the (potentially auto-generated) dependencies (Depends
    and Recommends) that are present after build are not in main
- no -dev/-debug/-doc packages that need exclusion
- No dependencies in main that are only superficially tested requiring
  more tests now.

Problems: None

[Embedded sources and static linking]
OK:
- no embedded source present
- no static linking
- does not have odd Built-Using entries
- not a go package, no extra constraints to consider in that regard

Problems: None

[Security]
OK:
- history of CVEs does not look concerning
- does not run a daemon as root
- does not use webkit1,2
- does not use lib*v8 directly
- does not open a port/socket
- does not process arbitrary web content
- does not use centralized online accounts
- does not integrate arbitrary javascript into the desktop
- does not deal with system authentication (eg, pam), etc)
- does not deal with security attestation (secure boot, tpm, signatures)

Problems:
- parses data formats (packets received from the kernel's QRTR socket)

[Common blockers]
OK:
- does not FTBFS currently
- does have a test suite that runs at build time
  - test suite fails will fail the build upon error.
- no new python2 dependency

Problems:
- build-time tests only check the documentation, not the actual library
- only has a superficial test that runs as autopkgtest
- special HW (compatible qualcomm modem) needed to do full end-to-end testing

[Packaging red flags]
OK:
- Ubuntu does carry a delta, but it is reasonable and maintenance under control
  - also, submitted to Debian: https://bugs.debian.org/1011354
- symbols tracking is in place
- d/watch is prese...

Read more...

Changed in libqrtr-glib (Ubuntu):
assignee: Lukas Märdian (slyon) → Ubuntu Security Team (ubuntu-security)
Steve Beattie (sbeattie)
tags: added: sec-1057
Revision history for this message
Sebastien Bacher (seb128) wrote :

The description has been updated with a simple manual testplan now, which was the required todoitem. We will try to see if we can get some hardware available for that testing

On the other todo items, desktop-packages is subscribed now and we will use update-maintainer on the next upload, that doesn't seem like doing an upload only for that change now though

It should be ready from a MIR perspective pending on the security review

description: updated
Revision history for this message
Lukas Märdian (slyon) wrote :

Thanks! MIR team ACK, using the testplan provided in the description.
Please try to get the hardware so the testplan can actually be executed.

I'm fine with deferring `update-maintainer` to the next upload/sync.

Revision history for this message
Mark Esler (eslerm) wrote :

I reviewed libqrtr-glib 1.2.2-1ubuntu1 as checked into kinetic. This shouldn't be considered a full audit but rather a quick gauge of maintainability. I do not have a Qualcomm modem to test this package with.

> libqrtr-glib is a glib-based library to use and manage the QRTR (Qualcomm IPC Router) bus.

- CVE History:
  - none
- build-depends
  - primarily glib2 and linux/qrtr
  - linux-vdso.so.1
  - libglib-2.0.so.0
  - libgio-2.0.so.0
  - libgobject-2.0.so.0
  - libc.so.6
  - libpcre.so.3
  - libm.so.6
  - libgmodule-2.0.so.0
  - libz.so.1
  - libmount.so.1
  - libselinux.so.1
  - libffi.so.8
  - ld-linux-x86-64.so.2
  - libblkid.so.1
  - libpcre2-8.so.0
- pre/post inst/rm scripts?
  - none
- init scripts?
  - none
- systemd units?
  - none
- dbus services?
  - none
- setuid binaries?
  - none
- binaries in PATH?
  - none
- sudo fragments?
  - none
- polkit files?
  - none
- udev rules?
  - none
- unit tests / autopkgtests?
  - basic build test
  - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1011354
  - see MIR teams testing requirements
- cron jobs?
  - none
- build logs:
  - no build errors or warnings
  - no lintain errors or warnings

- processes spawned?
  - none
- memory management?
  - looks sane
  - no direct use of memory copy functions
- file IO?
  - none
- logging?
  - only debug and error messages using gio
- environment variable usage?
  - none
- use of privileged functions?
  - none
- use of cryptography / random number sources etc?
  - none
- Use of temp files?
  - none
- Use of networking?
  - qrtr-bus.c and qrtr-client.c make heavy use of sockets and gsocket
  - many safety checks--e.g., message lengths and types
- use of WebKit?
  - none
- use of PolicyKit?
  - none

- significant cppcheck results?
  - none
- significant Coverity results?
  - none
  - two false positive resource leaks
    - fd handled by gio's g_socket_new_from_fd
- significant shellcheck results?
  - none
- significant bandit results?
  - none

For security to do updates, owning team needs to make a firm commitment to testing.

Security team ACK for promoting libqrtr-glib to main.

Mark Esler (eslerm)
Changed in libqrtr-glib (Ubuntu):
assignee: Ubuntu Security Team (ubuntu-security) → nobody
Changed in libqrtr-glib (Ubuntu):
status: New → In Progress
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Actually incomplete.
JBicha will check how clsoe we are to get the HW we need for testing to be doable.

Changed in libqrtr-glib (Ubuntu):
status: In Progress → Fix Committed
status: Fix Committed → Incomplete
Revision history for this message
Sebastien Bacher (seb128) wrote :

why did having the hardware become a requirement now when we got an ack before?

also even if the hardware support is not working as expected how is that worth than not having it available?

I pinged the oem team since we don't have budget to buy hardware for that in desktop but if they can't help does it mean we are stuck to not have the hardware support available for our users just because we don't own similar hardware ourselves?

Revision history for this message
Lukas Märdian (slyon) wrote :

Sorry, we had to withdraw the initial ACK, as we learned that the hardware to run the manual test plan is not yet available.

This requirement is fairly new, as we started requiring testing around any (new) package in "main", which also applies to the manual test plan, which is already a fallback of the much preferred automated testing story. If a team committed to running the manual test plan, but has no hardware available, the test plan is kind of useless.

Revision history for this message
Seth Arnold (seth-arnold) wrote :

The earliest I find for the test plan requirement is 2021-08-31:

https://wiki.ubuntu.com/MainInclusionProcess?action=diff&rev1=43&rev2=44

So yes, it's relatively new.

Revision history for this message
Sebastien Bacher (seb128) wrote :

I've updated the testplan section to give more details about the current situation

description: updated
description: updated
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

There has been not further update for too long, for now we consider it invalid.
Feel free to re-open if there is effort backing it up and motivation to bring it to main.

Changed in libqrtr-glib (Ubuntu):
status: Incomplete → Invalid
Jeremy Bícha (jbicha)
Changed in libqrtr-glib (Ubuntu):
status: Invalid → Incomplete
Revision history for this message
Sebastien Bacher (seb128) wrote :

I'm going to switch that one back to new to be reconsidered in regard of the update MIR template https://github.com/canonical/ubuntu-mir/pull/31 , I've updated the description accordingly.

description: updated
Changed in libqrtr-glib (Ubuntu):
status: Incomplete → New
Changed in libqrtr-glib (Ubuntu):
assignee: nobody → Christian Ehrhardt  (paelzer)
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Thank you Sebastien
to help others not reading or diffing it that means in regard to
- https://github.com/canonical/ubuntu-mir/issues/30
- https://github.com/canonical/ubuntu-mir/pull/31

You have added
"""
We believe we have exercised the different options available to provide testing without managing to find a solution.
We will keep trying to resolve the testing gap but meanwhile we would still like to request for the package to be consider because we can't provide the feature as an opt-in/in universe since it's a build option from modemmanager but not an independent plugin.
Due to the nature, integration and use cases of the package the consequences of a regression that might slip through most likely would be that Qualcomm modems stop working correctly.
"""

To wich with the new ruling we'd answer
"""
This does need special HW for thorough testing, but all options to
get this covered have been exhausted and based on demonstration of
enough investigation and proof of why there is currently no other
option it is accepted as-is as a compromise.
The owning team is committed and aware of the implications for
ongoing maintenance.
"""

Thereby the former back and forth on the testing is resolved (not by having it, but by accepting to be unable to do so for now).

Thereby all open required TODOs are fulfilled and this can be promoted.
As it is not yet showing as component mismatch I'm setting "In Progress" state for now.
Feel free to ping back when this is trying to be pulled in, we should also see it on the MIR team meetings check of mismatches then.

Changed in libqrtr-glib (Ubuntu):
assignee: Christian Ehrhardt  (paelzer) → nobody
status: New → In Progress
Revision history for this message
Sebastien Bacher (seb128) wrote :

it's on the component mismatch report now

Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

All open tasks and discussions (this had quite some, thank you all that participated) have been done.
Also the subscription was done and it is properly owned by the Desktop team now.
Furthermore as Sebastien said it is not in the component mismatch and ready to be promoted.

Changed in libqrtr-glib (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Libqmi (which is what pulls in libqrtr-glib) is ready except for this component mismatch.

While qmi is in proposed adding the depend libqrtr is only in noble-release atm

 libqrtr-glib | 1.2.2-1ubuntu2 | noble/universe | source
 libqmi | 1.32.4-2ubuntu1 | noble | source
 libqmi | 1.34.0-2 | noble-proposed | source

Even the -dev and -doc packages are free of further conflicting dependencies and have been approved above, hence promoting it all.

Override component to main
libqrtr-glib 1.2.2-1ubuntu2 in noble: universe/misc -> main
gir1.2-qrtr-1.0 1.2.2-1ubuntu2 in noble amd64: universe/introspection/optional/100% -> main
gir1.2-qrtr-1.0 1.2.2-1ubuntu2 in noble arm64: universe/introspection/optional/100% -> main
gir1.2-qrtr-1.0 1.2.2-1ubuntu2 in noble armhf: universe/introspection/optional/100% -> main
gir1.2-qrtr-1.0 1.2.2-1ubuntu2 in noble i386: universe/introspection/optional/100% -> main
gir1.2-qrtr-1.0 1.2.2-1ubuntu2 in noble ppc64el: universe/introspection/optional/100% -> main
gir1.2-qrtr-1.0 1.2.2-1ubuntu2 in noble riscv64: universe/introspection/optional/100% -> main
gir1.2-qrtr-1.0 1.2.2-1ubuntu2 in noble s390x: universe/introspection/optional/100% -> main
libqrtr-glib-dev 1.2.2-1ubuntu2 in noble amd64: universe/libdevel/optional/100% -> main
libqrtr-glib-dev 1.2.2-1ubuntu2 in noble arm64: universe/libdevel/optional/100% -> main
libqrtr-glib-dev 1.2.2-1ubuntu2 in noble armhf: universe/libdevel/optional/100% -> main
libqrtr-glib-dev 1.2.2-1ubuntu2 in noble i386: universe/libdevel/optional/100% -> main
libqrtr-glib-dev 1.2.2-1ubuntu2 in noble ppc64el: universe/libdevel/optional/100% -> main
libqrtr-glib-dev 1.2.2-1ubuntu2 in noble riscv64: universe/libdevel/optional/100% -> main
libqrtr-glib-dev 1.2.2-1ubuntu2 in noble s390x: universe/libdevel/optional/100% -> main
libqrtr-glib-doc 1.2.2-1ubuntu2 in noble amd64: universe/doc/optional/100% -> main
libqrtr-glib-doc 1.2.2-1ubuntu2 in noble arm64: universe/doc/optional/100% -> main
libqrtr-glib-doc 1.2.2-1ubuntu2 in noble armhf: universe/doc/optional/100% -> main
libqrtr-glib-doc 1.2.2-1ubuntu2 in noble i386: universe/doc/optional/100% -> main
libqrtr-glib-doc 1.2.2-1ubuntu2 in noble ppc64el: universe/doc/optional/100% -> main
libqrtr-glib-doc 1.2.2-1ubuntu2 in noble riscv64: universe/doc/optional/100% -> main
libqrtr-glib-doc 1.2.2-1ubuntu2 in noble s390x: universe/doc/optional/100% -> main
libqrtr-glib0 1.2.2-1ubuntu2 in noble amd64: universe/libs/optional/100% -> main
libqrtr-glib0 1.2.2-1ubuntu2 in noble arm64: universe/libs/optional/100% -> main
libqrtr-glib0 1.2.2-1ubuntu2 in noble armhf: universe/libs/optional/100% -> main
libqrtr-glib0 1.2.2-1ubuntu2 in noble i386: universe/libs/optional/100% -> main
libqrtr-glib0 1.2.2-1ubuntu2 in noble ppc64el: universe/libs/optional/100% -> main
libqrtr-glib0 1.2.2-1ubuntu2 in noble riscv64: universe/libs/optional/100% -> main
libqrtr-glib0 1.2.2-1ubuntu2 in noble s390x: universe/libs/optional/100% -> main
Override [y|N]? y
29 publications overridden.

Changed in libqrtr-glib (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.