Abstract socket in listen-stream cause validation failure
Metadata
Current evaluation
Fixed by merged PR #4354, which updated socket validation to accept abstract-namespace listen-stream addresses and was integrated into the 7.5 hotfix.
Resolution: closed resolved
Reason: PR #4354 was merged into hotfix/7.5, allowing snapd-supported abstract socket addresses in listen-stream validation and resolving the reported failure.
Evaluated by: mr-cal-bot
No scores available.
Issue body
### Bug Description
When trying to declare an abstract socket in a `snapcraft.yaml` file it caused validation to fail, even though it's supported by `snapd` [[1]](https://snapcraft.io/docs/snapcraft-app-and-service-metadata) [[2]](https://forum.snapcraft.io/t/socket-activation-support/2050/7). I was able to trace this back to an incomplete regex used for validation that doesn't support the possibility of sockets in abstract namespaces [here](https://github.com/snapcore/snapcraft/blob/dbe76f21d0e670811a05f6fa7838e704bbfaa52d/snapcraft/projects.py#L175-L195).
### To Reproduce
Try to build the `snapcraft.yaml` file with `snapcraft -v`.
### Environment
Ubuntu 23.04, snapcraft 7.4.3
### snapcraft.yaml
```shell
name: lldpad
base: core22
confinement: devmode
description: 'Redacted'
summary: Link Layer Discovery Protocol Implementation (Runtime)
version: 1.1+git20221028.aa18720-1-snap
parts:
lldpad:
plugin: nil
stage-packages:
- lldpad
apps:
lldpad:
command: /usr/sbin/lldpad
daemon: simple
plugs:
- network-bind
- browser-support
sockets:
unix:
listen-stream: "@snap.lldpad./com/intel/lldpad"
```
### Relevant log output
```shell
Starting Snapcraft 7.4.3
Logging execution to '/home/phckopper/.local/state/snapcraft/log/snapcraft-20230719-203033.689783.log'
Running on amd64 for amd64
Bad snapcraft.yaml content:
- '@snap.lldpad./com/intel/lldpad' is not a valid socket path (e.g. /tmp/mysocket.sock). (in field 'apps.lldpad.sockets.unix.listen-stream')
Full execution log: '/home/phckopper/.local/state/snapcraft/log/snapcraft-20230719-203033.689783.log
```
### Additional context
[How snapd validates internally](https://github.com/snapcore/snapd/blob/876953a4a80ee319aa4e175eaf81b0eefec6748c/snap/validate.go#L202)
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Fixed by merged PR #4354, which updated socket validation to accept abstract-namespace listen-stream addresses and was integrated into the 7.5 hotfix. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed by merged PR #4354 (commit 061b4f0f8), allowing abstract @snap.* Unix listen-stream addresses accepted by snapd. | |
| stealth/space-bunny-alpha | — | closed resolved | Fixed by PR #4354, merged into hotfix/7.5, allowing snapd-supported abstract socket addresses in listen-stream validation. | |
| stealth/space-bunny-alpha | — | closed resolved | Abstract Unix socket validation was fixed by merged PR #4354, updating the path pattern to accept listen-stream sockets in abstract namespaces. | |
| qwen/qwen3.6-35b-a3b | — | — | Abstract Unix socket paths in listen-stream failed validation due to an incomplete regex. The issue was resolved via PR #4354, which updated the validation pattern to support abstract namespaces. | |
| qwen/qwen3.6-35b-a3b | — | — | Fixed validation failure for abstract Unix sockets by updating the socket path regex. Resolved via hotfix pull request #4354. | |
| qwen/qwen3.6-35b-a3b | — | — | Validation failure for abstract sockets in listen-stream was fixed by updating the socket path regex. Resolved via hotfix PR #4354. | |
| qwen/qwen3.6-35b-a3b | — | — | Fixed validation failure for abstract socket paths in listen-stream by updating the regex. Resolved via hotfix PR #4354. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Abstract socket paths in listen-stream failed validation due to an incomplete regex. The bug was fixed when a hotfix updating the validation logic was merged via pull request #4354. |
Update history
No update history recorded yet.
Related work
-
Likely Fixed By:
canonical/snapcraft#4354
(confidence 100%)
The merged fix added support for abstract socket listen-streams and closed #4287.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #4354 fix: support abstract socket listen-streams | snapcraft | merged | Merged PR #4354 added abstract-socket listen-stream validation, fixing #4287, and was integrated into hotfix/7.5 via 8c01788. |