Skip to content

Commit 84346ca

Browse files
committed
interfaces/camera: Add AppArmor snippet for Halium with minimal privileges
1 parent ced84e0 commit 84346ca

1 file changed

Lines changed: 28 additions & 1 deletion

File tree

interfaces/builtin/camera.go

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ package builtin
2121

2222
import (
2323
"strings"
24+
25+
"github.com/snapcore/snapd/release"
2426
)
2527

2628
const cameraSummary = `allows access to all cameras`
@@ -56,6 +58,26 @@ const cameraConnectedPlugAppArmor = `
5658
/sys/devices/platform/**/usb*/**/video4linux/** r,
5759
`
5860

61+
const cameraConnectedPlugTouchAppArmor = `
62+
# Support for Android-based Camera stack on Ubuntu Touch
63+
/android{,/**} r,
64+
/{,android/}system/build.prop r,
65+
/{,android/}vendor/build.prop r,
66+
/{,android/}odm/build.prop r,
67+
68+
# libcamera_compat_layer doesn't require proprietary vendor blobs
69+
/{,android/}system/lib{,64}/** r,
70+
/{,android/}system/lib{,64}/**.so m,
71+
72+
# Commonly expected Android paths
73+
/{,dev/}socket/property_service rw,
74+
/{,dev/}socket/logdw rw,
75+
/{,dev/}__properties__/** r,
76+
77+
# Allow access to the CameraService on app-only binder
78+
/dev/{,binderfs/}binder rw,
79+
`
80+
5981
// DetectCameraFromPath returns true if the given path corresponds to an
6082
// AppArmor rule with the prompt prefix from the camera interface.
6183
//
@@ -74,13 +96,18 @@ var cameraConnectedPlugUDev = []string{
7496
}
7597

7698
func init() {
99+
connectedPlugAppArmor := cameraConnectedPlugAppArmor
100+
if release.OnTouch {
101+
connectedPlugAppArmor += cameraConnectedPlugTouchAppArmor
102+
}
103+
77104
registerIface(&commonInterface{
78105
name: "camera",
79106
summary: cameraSummary,
80107
implicitOnCore: true,
81108
implicitOnClassic: true,
82109
baseDeclarationSlots: cameraBaseDeclarationSlots,
83-
connectedPlugAppArmor: cameraConnectedPlugAppArmor,
110+
connectedPlugAppArmor: connectedPlugAppArmor,
84111
connectedPlugUDev: cameraConnectedPlugUDev,
85112
})
86113
}

0 commit comments

Comments
 (0)