@@ -221,7 +221,7 @@ TEST(device_handler, sanitize_onebad) {
221
221
TEST (device_handler, DevPermissionsMatchNormal) {
222
222
// Basic from ueventd.rc
223
223
// /dev/null 0666 root root
224
- Permissions permissions (" /dev/null" , 0666 , 0 , 0 );
224
+ Permissions permissions (" /dev/null" , 0666 , 0 , 0 , false );
225
225
EXPECT_TRUE (permissions.Match (" /dev/null" ));
226
226
EXPECT_FALSE (permissions.Match (" /dev/nullsuffix" ));
227
227
EXPECT_FALSE (permissions.Match (" /dev/nul" ));
@@ -233,7 +233,7 @@ TEST(device_handler, DevPermissionsMatchNormal) {
233
233
TEST (device_handler, DevPermissionsMatchPrefix) {
234
234
// Prefix from ueventd.rc
235
235
// /dev/dri/* 0666 root graphics
236
- Permissions permissions (" /dev/dri/*" , 0666 , 0 , 1000 );
236
+ Permissions permissions (" /dev/dri/*" , 0666 , 0 , 1000 , false );
237
237
EXPECT_TRUE (permissions.Match (" /dev/dri/some_dri_device" ));
238
238
EXPECT_TRUE (permissions.Match (" /dev/dri/some_other_dri_device" ));
239
239
EXPECT_TRUE (permissions.Match (" /dev/dri/" ));
@@ -246,7 +246,7 @@ TEST(device_handler, DevPermissionsMatchPrefix) {
246
246
TEST (device_handler, DevPermissionsMatchWildcard) {
247
247
// Wildcard example
248
248
// /dev/device*name 0666 root graphics
249
- Permissions permissions (" /dev/device*name" , 0666 , 0 , 1000 );
249
+ Permissions permissions (" /dev/device*name" , 0666 , 0 , 1000 , false );
250
250
EXPECT_TRUE (permissions.Match (" /dev/devicename" ));
251
251
EXPECT_TRUE (permissions.Match (" /dev/device123name" ));
252
252
EXPECT_TRUE (permissions.Match (" /dev/deviceabcname" ));
@@ -260,13 +260,31 @@ TEST(device_handler, DevPermissionsMatchWildcard) {
260
260
TEST (device_handler, DevPermissionsMatchWildcardPrefix) {
261
261
// Wildcard+Prefix example
262
262
// /dev/device*name* 0666 root graphics
263
- Permissions permissions (" /dev/device*name*" , 0666 , 0 , 1000 );
263
+ Permissions permissions (" /dev/device*name*" , 0666 , 0 , 1000 , false );
264
264
EXPECT_TRUE (permissions.Match (" /dev/devicename" ));
265
265
EXPECT_TRUE (permissions.Match (" /dev/device123name" ));
266
266
EXPECT_TRUE (permissions.Match (" /dev/deviceabcname" ));
267
267
EXPECT_TRUE (permissions.Match (" /dev/device123namesomething" ));
268
268
// FNM_PATHNAME doesn't match '/' with *
269
269
EXPECT_FALSE (permissions.Match (" /dev/device123name/something" ));
270
+ EXPECT_FALSE (permissions.Match (" /dev/device/1/2/3name/something" ));
271
+ EXPECT_FALSE (permissions.Match (" /dev/deviceame" ));
272
+ EXPECT_EQ (0666U , permissions.perm ());
273
+ EXPECT_EQ (0U , permissions.uid ());
274
+ EXPECT_EQ (1000U , permissions.gid ());
275
+ }
276
+
277
+ TEST (device_handler, DevPermissionsMatchWildcardPrefix_NoFnmPathName) {
278
+ // Wildcard+Prefix example with no_fnm_pathname
279
+ // /dev/device*name* 0666 root graphics
280
+ Permissions permissions (" /dev/device*name*" , 0666 , 0 , 1000 , true );
281
+ EXPECT_TRUE (permissions.Match (" /dev/devicename" ));
282
+ EXPECT_TRUE (permissions.Match (" /dev/device123name" ));
283
+ EXPECT_TRUE (permissions.Match (" /dev/deviceabcname" ));
284
+ EXPECT_TRUE (permissions.Match (" /dev/device123namesomething" ));
285
+ // With NoFnmPathName, the below matches, unlike DevPermissionsMatchWildcardPrefix.
286
+ EXPECT_TRUE (permissions.Match (" /dev/device123name/something" ));
287
+ EXPECT_TRUE (permissions.Match (" /dev/device/1/2/3name/something" ));
270
288
EXPECT_FALSE (permissions.Match (" /dev/deviceame" ));
271
289
EXPECT_EQ (0666U , permissions.perm ());
272
290
EXPECT_EQ (0U , permissions.uid ());
@@ -275,7 +293,8 @@ TEST(device_handler, DevPermissionsMatchWildcardPrefix) {
275
293
276
294
TEST (device_handler, SysfsPermissionsMatchWithSubsystemNormal) {
277
295
// /sys/devices/virtual/input/input* enable 0660 root input
278
- SysfsPermissions permissions (" /sys/devices/virtual/input/input*" , " enable" , 0660 , 0 , 1001 );
296
+ SysfsPermissions permissions (" /sys/devices/virtual/input/input*" , " enable" , 0660 , 0 , 1001 ,
297
+ false );
279
298
EXPECT_TRUE (permissions.MatchWithSubsystem (" /sys/devices/virtual/input/input0" , " input" ));
280
299
EXPECT_FALSE (permissions.MatchWithSubsystem (" /sys/devices/virtual/input/not_input0" , " input" ));
281
300
EXPECT_EQ (0660U , permissions.perm ());
@@ -285,7 +304,7 @@ TEST(device_handler, SysfsPermissionsMatchWithSubsystemNormal) {
285
304
286
305
TEST (device_handler, SysfsPermissionsMatchWithSubsystemClass) {
287
306
// /sys/class/input/event* enable 0660 root input
288
- SysfsPermissions permissions (" /sys/class/input/event*" , " enable" , 0660 , 0 , 1001 );
307
+ SysfsPermissions permissions (" /sys/class/input/event*" , " enable" , 0660 , 0 , 1001 , false );
289
308
EXPECT_TRUE (permissions.MatchWithSubsystem (
290
309
" /sys/devices/soc.0/f9924000.i2c/i2c-2/2-0020/input/input0/event0" , " input" ));
291
310
EXPECT_FALSE (permissions.MatchWithSubsystem (
@@ -299,7 +318,7 @@ TEST(device_handler, SysfsPermissionsMatchWithSubsystemClass) {
299
318
300
319
TEST (device_handler, SysfsPermissionsMatchWithSubsystemBus) {
301
320
// /sys/bus/i2c/devices/i2c-* enable 0660 root input
302
- SysfsPermissions permissions (" /sys/bus/i2c/devices/i2c-*" , " enable" , 0660 , 0 , 1001 );
321
+ SysfsPermissions permissions (" /sys/bus/i2c/devices/i2c-*" , " enable" , 0660 , 0 , 1001 , false );
303
322
EXPECT_TRUE (permissions.MatchWithSubsystem (" /sys/devices/soc.0/f9967000.i2c/i2c-5" , " i2c" ));
304
323
EXPECT_FALSE (permissions.MatchWithSubsystem (" /sys/devices/soc.0/f9967000.i2c/not-i2c" , " i2c" ));
305
324
EXPECT_FALSE (
0 commit comments