Compare commits

..

No commits in common. "961b341e8537a69455c130b98b50f51ed011e362" and "d3dcf4e3b95e3d3149ee169dc13b43e2e1a02cec" have entirely different histories.

24 changed files with 207 additions and 163 deletions

View File

@ -5,8 +5,8 @@
# Match string formats: # Match string formats:
# <subsystem>:<modalias> # <subsystem>:<modalias>
# #
# pci:v<vendor>d<device> # pci:v<vendor>d<device>:
# usb:v<vendor>p<product> # usb:v<vendor>p<product>:
# #
# To add local entries, create a new file # To add local entries, create a new file
# /etc/udev/hwdb.d/61-autosuspend-local.hwdb # /etc/udev/hwdb.d/61-autosuspend-local.hwdb
@ -24,6 +24,8 @@
# #
# Allowed properties are: # Allowed properties are:
# ID_AUTOSUSPEND=1 # ID_AUTOSUSPEND=1
#
# All matches should end in ':*' to allow future expansions of the match key.
# Sort by brand, model # Sort by brand, model
@ -32,7 +34,7 @@
######################################### #########################################
# AU9540 Smartcard Reader # AU9540 Smartcard Reader
usb:v058Fp9540* usb:v058Fp9540:*
ID_AUTOSUSPEND=1 ID_AUTOSUSPEND=1
######################################### #########################################
@ -40,9 +42,9 @@ usb:v058Fp9540*
######################################### #########################################
# X1C8 Touchscreen # X1C8 Touchscreen
usb:v04F3p2B7C* usb:v04F3p2B7C:*
# T14 Gen 1 Touchscreen # T14 Gen 1 Touchscreen
usb:v04F3p2ACC* usb:v04F3p2ACC:*
ID_AUTOSUSPEND=1 ID_AUTOSUSPEND=1
######################################### #########################################
@ -50,14 +52,14 @@ usb:v04F3p2ACC*
######################################### #########################################
# Emulated USB HID devices # Emulated USB HID devices
usb:v0627p0001:*QEMU USB Keyboard* usb:v0627p0001:*QEMU USB Keyboard*:*
usb:v0627p0001:*QEMU USB Mouse* usb:v0627p0001:*QEMU USB Mouse*:*
usb:v0627p0001:*QEMU USB Tablet* usb:v0627p0001:*QEMU USB Tablet*:*
ID_AUTOSUSPEND=1 ID_AUTOSUSPEND=1
######################################### #########################################
# Wacom # Wacom
######################################### #########################################
usb:v056Ap51A0* usb:v056Ap51A0:*
ID_AUTOSUSPEND=1 ID_AUTOSUSPEND=1

View File

@ -35,6 +35,8 @@
# the struct input_absinfo as listed in linux/input.h. If a field is missing # the struct input_absinfo as listed in linux/input.h. If a field is missing
# the field will be left as-is. Not all fields need to be present. e.g. ::45 # the field will be left as-is. Not all fields need to be present. e.g. ::45
# sets the resolution to 45 units/mm. # sets the resolution to 45 units/mm.
#
# All matches should end in ':*' to allow future expansions of the match key.
# Sort by brand, model # Sort by brand, model
@ -43,9 +45,9 @@
######################################### #########################################
# Hyperpen 12000U # Hyperpen 12000U
evdev:input:b0003v08CAp0010* evdev:input:b0003v08CAp0010:*
# Hyperpen 6000U # Hyperpen 6000U
evdev:input:b0003v08CAp0020* evdev:input:b0003v08CAp0020:*
EVDEV_ABS_00=::20 EVDEV_ABS_00=::20
EVDEV_ABS_01=::20 EVDEV_ABS_01=::20
@ -54,48 +56,48 @@ evdev:input:b0003v08CAp0020*
######################################### #########################################
# Macbook2,1 (late 2006), single-button touchpad # Macbook2,1 (late 2006), single-button touchpad
evdev:input:b0003v05ACp021B* evdev:input:b0003v05ACp021B:*
# Macbook4,1 # Macbook4,1
evdev:input:b0003v05ACp0229* evdev:input:b0003v05ACp0229:*
evdev:input:b0003v05ACp022A* evdev:input:b0003v05ACp022A:*
EVDEV_ABS_00=256:1471:12 EVDEV_ABS_00=256:1471:12
EVDEV_ABS_01=256:831:12 EVDEV_ABS_01=256:831:12
# Macbook5,1 (unibody), aka wellspring3 # Macbook5,1 (unibody), aka wellspring3
evdev:input:b0003v05ACp0236* evdev:input:b0003v05ACp0236:*
evdev:input:b0003v05ACp0237* evdev:input:b0003v05ACp0237:*
evdev:input:b0003v05ACp0238* evdev:input:b0003v05ACp0238:*
EVDEV_ABS_00=::92 EVDEV_ABS_00=::92
EVDEV_ABS_01=::90 EVDEV_ABS_01=::90
EVDEV_ABS_35=::92 EVDEV_ABS_35=::92
EVDEV_ABS_36=::90 EVDEV_ABS_36=::90
# Macbook8 (unibody, March 2011) # Macbook8 (unibody, March 2011)
evdev:input:b0003v05ACp0245* evdev:input:b0003v05ACp0245:*
evdev:input:b0003v05ACp0246* evdev:input:b0003v05ACp0246:*
evdev:input:b0003v05ACp0247* evdev:input:b0003v05ACp0247:*
EVDEV_ABS_00=::92 EVDEV_ABS_00=::92
EVDEV_ABS_01=::91 EVDEV_ABS_01=::91
EVDEV_ABS_35=::92 EVDEV_ABS_35=::92
EVDEV_ABS_36=::91 EVDEV_ABS_36=::91
# Macbook8,2 (unibody) # Macbook8,2 (unibody)
evdev:input:b0003v05ACp0252* evdev:input:b0003v05ACp0252:*
evdev:input:b0003v05ACp0253* evdev:input:b0003v05ACp0253:*
evdev:input:b0003v05ACp0254* evdev:input:b0003v05ACp0254:*
EVDEV_ABS_00=::94 EVDEV_ABS_00=::94
EVDEV_ABS_01=::92 EVDEV_ABS_01=::92
EVDEV_ABS_35=::94 EVDEV_ABS_35=::94
EVDEV_ABS_36=::92 EVDEV_ABS_36=::92
# MacbookPro10,1 (unibody, June 2012) # MacbookPro10,1 (unibody, June 2012)
evdev:input:b0003v05ACp0262* evdev:input:b0003v05ACp0262:*
evdev:input:b0003v05ACp0263* evdev:input:b0003v05ACp0263:*
evdev:input:b0003v05ACp0264* evdev:input:b0003v05ACp0264:*
# MacbookPro10,2 (unibody, October 2012) # MacbookPro10,2 (unibody, October 2012)
evdev:input:b0003v05ACp0259* evdev:input:b0003v05ACp0259:*
evdev:input:b0003v05ACp025A* evdev:input:b0003v05ACp025A:*
evdev:input:b0003v05ACp025B* evdev:input:b0003v05ACp025B:*
EVDEV_ABS_00=::94 EVDEV_ABS_00=::94
EVDEV_ABS_01=::92 EVDEV_ABS_01=::92
EVDEV_ABS_35=::94 EVDEV_ABS_35=::94
@ -292,7 +294,7 @@ evdev:name:AlpsPS/2 ALPS GlidePoint:dmi:bvn*:bvr*:bd*:svnDellInc.:pnXPSM1530:*
##### #####
# Fujitsu Component - USB Touch Panel # Fujitsu Component - USB Touch Panel
evdev:input:b0003v0430p0530* evdev:input:b0003v0430p0530:*
EVDEV_ABS_00=0:4096:16 EVDEV_ABS_00=0:4096:16
EVDEV_ABS_01=0:4096:16 EVDEV_ABS_01=0:4096:16
@ -444,7 +446,7 @@ evdev:name:Synaptics TM3289-002:dmi:*svnLENOVO*:pvrThinkPadX1Carbon5th:*
EVDEV_ABS_36=::19 EVDEV_ABS_36=::19
# Lenovo Thinkpad X1 Tablet Gen3 # Lenovo Thinkpad X1 Tablet Gen3
evdev:input:b0003v17EFp60B5* evdev:input:b0003v17EFp60B5:*
EVDEV_ABS_00=::12 EVDEV_ABS_00=::12
EVDEV_ABS_01=::11 EVDEV_ABS_01=::11
EVDEV_ABS_35=::12 EVDEV_ABS_35=::12
@ -637,7 +639,7 @@ evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnTOSHIBA:pnSATELLITER830:*
######################################### #########################################
# Trust Flex Graphics Tablet # Trust Flex Graphics Tablet
evdev:input:b0003v2179p0004* evdev:input:b0003v2179p0004:*
EVDEV_ABS_00=::234 EVDEV_ABS_00=::234
EVDEV_ABS_01=::328 EVDEV_ABS_01=::328
@ -646,11 +648,11 @@ evdev:input:b0003v2179p0004*
######################################### #########################################
# WALTOP International Corp. Slim Tablet # WALTOP International Corp. Slim Tablet
evdev:input:b0003v172Fp0031* evdev:input:b0003v172Fp0031:*
EVDEV_ABS_00=0:10000:400 EVDEV_ABS_00=0:10000:400
EVDEV_ABS_01=0:6250:400 EVDEV_ABS_01=0:6250:400
#WALTOP International Corp. Graphics Tablet #WALTOP International Corp. Graphics Tablet
evdev:input:b0003v172Fp0047* evdev:input:b0003v172Fp0047:*
EVDEV_ABS_00=0:20000:80 EVDEV_ABS_00=0:20000:80
EVDEV_ABS_01=0:12500:80 EVDEV_ABS_01=0:12500:80

View File

@ -9,7 +9,7 @@
# ABI. # ABI.
# #
# Match string formats: # Match string formats:
# id-input:modalias:<modalias> # id-input:modalias:<modalias pattern>
# #
# To add local entries, create a new file # To add local entries, create a new file
# /etc/udev/hwdb.d/61-input-id-local.hwdb # /etc/udev/hwdb.d/61-input-id-local.hwdb
@ -48,27 +48,28 @@
# NOT allowed in this file are: # NOT allowed in this file are:
# ID_INPUT_WIDTH_MM, ID_INPUT_HEIGHT_MM, ID_INPUT_TOUCHPAD_INTEGRATION # ID_INPUT_WIDTH_MM, ID_INPUT_HEIGHT_MM, ID_INPUT_TOUCHPAD_INTEGRATION
# #
# All matches should end in ':*' to allow future expansions of the match key.
# Example: # Example:
# id-input:modalias:input:b0003v1234pABCD* # id-input:modalias:input:b0003v1234pABCD:*
# ID_INPUT_TOUCHPAD=1 # ID_INPUT_TOUCHPAD=1
# ID_INPUT=1 # ID_INPUT=1
# Sort by brand, model # Sort by brand, model
# UC-Logic TABLET 1060N Pad # UC-Logic TABLET 1060N Pad
id-input:modalias:input:b0003v5543p0081* id-input:modalias:input:b0003v5543p0081:*
ID_INPUT_TABLET=1 ID_INPUT_TABLET=1
ID_INPUT_TABLET_PAD=1 ID_INPUT_TABLET_PAD=1
# XP-PEN STAR 06 # XP-PEN STAR 06
id-input:modalias:input:b0003v28bdp0078* id-input:modalias:input:b0003v28bdp0078:*
ID_INPUT_TABLET=1 ID_INPUT_TABLET=1
# Lite-On Tech IBM USB Travel Keyboard with Ultra Nav Mouse # Lite-On Tech IBM USB Travel Keyboard with Ultra Nav Mouse
id-input:modalias:input:b0003v04B3p301Ee0100-e0,1,2,4* id-input:modalias:input:b0003v04B3p301Ee0100-e0,1,2,4*:*
ID_INPUT_POINTINGSTICK=1 ID_INPUT_POINTINGSTICK=1
# Logitech Ultrathin Touch Mouse # Logitech Ultrathin Touch Mouse
id-input:modalias:input:b0005v046DpB00De0700* id-input:modalias:input:b0005v046DpB00De0700:*
ID_INPUT_MOUSE=1 ID_INPUT_MOUSE=1

View File

@ -47,6 +47,8 @@
# /sys/class/input/input?/capabilities/ev" and <vendor> is the # /sys/class/input/input?/capabilities/ev" and <vendor> is the
# firmware-provided string exported by the kernel DMI modalias, # firmware-provided string exported by the kernel DMI modalias,
# see /sys/class/dmi/id/modalias # see /sys/class/dmi/id/modalias
#
# All matches should end in ':*' to allow future expansions of the match key.
# ######################### KEY MAPPING ###################################### # ######################### KEY MAPPING ######################################
# #
@ -228,7 +230,7 @@ evdev:name:Asus Laptop extra buttons:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:*
KEYBOARD_KEY_6b=f21 # Touchpad Toggle KEYBOARD_KEY_6b=f21 # Touchpad Toggle
# USB keyboard in Asus FX503VD # USB keyboard in Asus FX503VD
evdev:input:b0003v0B05p1869* evdev:input:b0003v0B05p1869:*
KEYBOARD_KEY_ff31007c=f20 # Remap micmute to f20 KEYBOARD_KEY_ff31007c=f20 # Remap micmute to f20
########################################################### ###########################################################
@ -266,7 +268,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnCompaq*:pn*Evo*N*:*
KEYBOARD_KEY_9e=email KEYBOARD_KEY_9e=email
KEYBOARD_KEY_9f=homepage KEYBOARD_KEY_9f=homepage
evdev:input:b0003v049Fp0051* evdev:input:b0003v049Fp0051:*
KEYBOARD_KEY_0c0011=presentation KEYBOARD_KEY_0c0011=presentation
KEYBOARD_KEY_0c0012=addressbook KEYBOARD_KEY_0c0012=addressbook
KEYBOARD_KEY_0c0013=info KEYBOARD_KEY_0c0013=info
@ -463,7 +465,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnGeminiDevices:pnNC14V1006:*
########################################################### ###########################################################
# Slimstar 320 # Slimstar 320
evdev:input:b0003v0458p0708* evdev:input:b0003v0458p0708:*
KEYBOARD_KEY_0900f0=scrollup KEYBOARD_KEY_0900f0=scrollup
KEYBOARD_KEY_0900f1=scrolldown KEYBOARD_KEY_0900f1=scrolldown
KEYBOARD_KEY_0900f3=back KEYBOARD_KEY_0900f3=back
@ -713,7 +715,7 @@ evdev:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnIBM*:pn*:*
KEYBOARD_KEY_17=prog1 # ThinkPad/ThinkVantage button (high keycode: "vendor") KEYBOARD_KEY_17=prog1 # ThinkPad/ThinkVantage button (high keycode: "vendor")
# IBM Thinkpad USB Keyboard Trackpoint # IBM Thinkpad USB Keyboard Trackpoint
evdev:input:b0003v04B3p301[89]* evdev:input:b0003v04B3p301[89]:*
KEYBOARD_KEY_900f0=screenlock KEYBOARD_KEY_900f0=screenlock
KEYBOARD_KEY_900f1=wlan KEYBOARD_KEY_900f1=wlan
KEYBOARD_KEY_900f2=switchvideomode KEYBOARD_KEY_900f2=switchvideomode
@ -757,7 +759,7 @@ evdev:name:ThinkPad Extra Buttons:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:*
KEYBOARD_KEY_45=bookmarks KEYBOARD_KEY_45=bookmarks
# ThinkPad Keyboard with TrackPoint # ThinkPad Keyboard with TrackPoint
evdev:input:b0003v17EFp6009* evdev:input:b0003v17EFp6009:*
KEYBOARD_KEY_090012=screenlock # Fn+F2 KEYBOARD_KEY_090012=screenlock # Fn+F2
KEYBOARD_KEY_090013=battery # Fn+F3 KEYBOARD_KEY_090013=battery # Fn+F3
KEYBOARD_KEY_090014=wlan # Fn+F5 KEYBOARD_KEY_090014=wlan # Fn+F5
@ -864,7 +866,7 @@ evdev:name:Microphone Mute Button:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:*
KEYBOARD_KEY_00=f20 KEYBOARD_KEY_00=f20
# enhanced USB keyboard # enhanced USB keyboard
evdev:input:b0003v04B3p301B* evdev:input:b0003v04B3p301B:*
KEYBOARD_KEY_90001=prog1 # ThinkVantage KEYBOARD_KEY_90001=prog1 # ThinkVantage
KEYBOARD_KEY_90002=screenlock KEYBOARD_KEY_90002=screenlock
KEYBOARD_KEY_90003=file KEYBOARD_KEY_90003=file
@ -882,7 +884,7 @@ evdev:input:b0003v04B3p301B*
# 27MHz wireless keyboards, these all have a PID of 00?? and all send c10xx # 27MHz wireless keyboards, these all have a PID of 00?? and all send c10xx
# logitech custom consumer usage-page codes. The mappings below are the most # logitech custom consumer usage-page codes. The mappings below are the most
# common, but some mapping may differ, especially the Fn F1-F12 mappings # common, but some mapping may differ, especially the Fn F1-F12 mappings
evdev:input:b0003v046Dp00* evdev:input:b0003v046Dp00??:*
KEYBOARD_KEY_c0183=media # HUT:config, kbd:Media/Music player button KEYBOARD_KEY_c0183=media # HUT:config, kbd:Media/Music player button
KEYBOARD_KEY_c1001=chat # Messenger button KEYBOARD_KEY_c1001=chat # Messenger button
KEYBOARD_KEY_c1002=camera # Webcam button KEYBOARD_KEY_c1002=camera # Webcam button
@ -932,7 +934,7 @@ evdev:input:b0003v046Dp00*
KEYBOARD_KEY_c104c=prog4 # Smartkey D (Fn + F12) → XF86Launch4 KEYBOARD_KEY_c104c=prog4 # Smartkey D (Fn + F12) → XF86Launch4
# Cordless Access Keyboard (27 MHz, modelnumber Y-RH35) # Cordless Access Keyboard (27 MHz, modelnumber Y-RH35)
evdev:input:b0003v046Dp0042* evdev:input:b0003v046Dp0042:*
KEYBOARD_KEY_c1041=new KEYBOARD_KEY_c1041=new
KEYBOARD_KEY_c1042=reply KEYBOARD_KEY_c1042=reply
KEYBOARD_KEY_c1043=forward KEYBOARD_KEY_c1043=forward
@ -947,7 +949,7 @@ evdev:input:b0003v046Dp0042*
KEYBOARD_KEY_c104c=audio KEYBOARD_KEY_c104c=audio
# "Cordless Rechargeable Desktop" keyboard (27 MHz, modelnumber Y-RK49) # "Cordless Rechargeable Desktop" keyboard (27 MHz, modelnumber Y-RK49)
evdev:input:b0003v046Dp0045* evdev:input:b0003v046Dp0045:*
KEYBOARD_KEY_c1041=new KEYBOARD_KEY_c1041=new
KEYBOARD_KEY_c1042=reply KEYBOARD_KEY_c1042=reply
KEYBOARD_KEY_c1043=forward KEYBOARD_KEY_c1043=forward
@ -958,7 +960,7 @@ evdev:input:b0003v046Dp0045*
KEYBOARD_KEY_c104c=audio KEYBOARD_KEY_c104c=audio
# S510 keyboard (27 MHz, modelnumber Y-RAK73) # S510 keyboard (27 MHz, modelnumber Y-RAK73)
evdev:input:b0003v046Dp0056* evdev:input:b0003v046Dp0056:*
KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1) KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
# MX3000 keyboard (27 MHz, modelnumber Y-RAM74) # MX3000 keyboard (27 MHz, modelnumber Y-RAM74)
@ -967,7 +969,7 @@ evdev:input:b0003v046Dp0056*
# Note if the "Special Button Function" in the HID++ features register gets # Note if the "Special Button Function" in the HID++ features register gets
# cleared then the scroll-wheel events for these buttons go away and then # cleared then the scroll-wheel events for these buttons go away and then
# tilting the scrollwheel left/right starts sending c1022 / c1024 events # tilting the scrollwheel left/right starts sending c1022 / c1024 events
evdev:input:b0003v046Dp0057* evdev:input:b0003v046Dp0057:*
KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1) KEYBOARD_KEY_c1041=battery # Battery icon (Fn + F1)
#KEYBOARD_KEY_c101d=scrolldown # Button below scrollwheel (see note above) #KEYBOARD_KEY_c101d=scrolldown # Button below scrollwheel (see note above)
@ -976,7 +978,7 @@ evdev:input:b0003v046Dp0057*
#KEYBOARD_KEY_c1024=scrollright # Right click on scroll-wheel (see note above) #KEYBOARD_KEY_c1024=scrollright # Right click on scroll-wheel (see note above)
# MX3200 keyboard (27 MHz, modelnumber Y-RAV80) # MX3200 keyboard (27 MHz, modelnumber Y-RAV80)
evdev:input:b0003v046Dp005C* evdev:input:b0003v046Dp005C:*
KEYBOARD_KEY_c1001=phone # VOIP button KEYBOARD_KEY_c1001=phone # VOIP button
KEYBOARD_KEY_c1016=record # Record button KEYBOARD_KEY_c1016=record # Record button
KEYBOARD_KEY_c1041=wordprocessor # Word icon (Fn + F1) KEYBOARD_KEY_c1041=wordprocessor # Word icon (Fn + F1)
@ -989,13 +991,13 @@ evdev:input:b0003v046Dp005C*
KEYBOARD_KEY_c1048=prog4 # Smartkey D (Fn + F8) → XF86Launch4 KEYBOARD_KEY_c1048=prog4 # Smartkey D (Fn + F8) → XF86Launch4
# EX100 keyboard (27 MHz, modelnumber Y-RBH94) # EX100 keyboard (27 MHz, modelnumber Y-RBH94)
evdev:input:b0003v046Dp0065* evdev:input:b0003v046Dp0065:*
KEYBOARD_KEY_c104b=battery # Battery icon (Fn + F11) KEYBOARD_KEY_c104b=battery # Battery icon (Fn + F11)
KEYBOARD_KEY_c104c=ejectcd # Eject icon (Fn + F12) KEYBOARD_KEY_c104c=ejectcd # Eject icon (Fn + F12)
# S520 keyboard (27 MHz, modelnumber Y-RBA97) # S520 keyboard (27 MHz, modelnumber Y-RBA97)
# Note this one uses non-standard codes for FN + F9 - Fn + F12? # Note this one uses non-standard codes for FN + F9 - Fn + F12?
evdev:input:b0003v046Dp0066* evdev:input:b0003v046Dp0066:*
KEYBOARD_KEY_c100e=prog4 # Smartkey D (Fn + F12) → XF86Launch4 KEYBOARD_KEY_c100e=prog4 # Smartkey D (Fn + F12) → XF86Launch4
KEYBOARD_KEY_c1019=prog1 # Smartkey A (Fn + F9) → XF86Launch1 KEYBOARD_KEY_c1019=prog1 # Smartkey A (Fn + F9) → XF86Launch1
KEYBOARD_KEY_c101a=prog2 # Smartkey B (Fn + F10) → XF86Launch2 KEYBOARD_KEY_c101a=prog2 # Smartkey B (Fn + F10) → XF86Launch2
@ -1011,12 +1013,12 @@ evdev:input:b0003v046Dp0066*
KEYBOARD_KEY_c106f=battery # Battery icon KEYBOARD_KEY_c106f=battery # Battery icon
# S510 remote control (27 MHz) # S510 remote control (27 MHz)
evdev:input:b0003v046Dp00FE* evdev:input:b0003v046Dp00FE:*
KEYBOARD_KEY_c1018=media # Media button KEYBOARD_KEY_c1018=media # Media button
# MX5000 keyboard (HID proxy mode and bluetooth matches) # MX5000 keyboard (HID proxy mode and bluetooth matches)
evdev:input:b0003v046DpB305* evdev:input:b0003v046DpB305:*
evdev:input:b0005v046DpB305* evdev:input:b0005v046DpB305:*
KEYBOARD_KEY_c0230=zoomreset # HUT says fullscreen, kbd says 100% KEYBOARD_KEY_c0230=zoomreset # HUT says fullscreen, kbd says 100%
KEYBOARD_KEY_c1004=send # Send and receive / sync button KEYBOARD_KEY_c1004=send # Send and receive / sync button
KEYBOARD_KEY_c1006=coffee # Status (online/away) button KEYBOARD_KEY_c1006=coffee # Status (online/away) button
@ -1031,8 +1033,8 @@ evdev:input:b0005v046DpB305*
KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4 KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
# MX5500 keyboard (HID proxy mode and bluetooth matches) # MX5500 keyboard (HID proxy mode and bluetooth matches)
evdev:input:b0003v046DpB30B* evdev:input:b0003v046DpB30B:*
evdev:input:b0005v046DpB30B* evdev:input:b0005v046DpB30B:*
KEYBOARD_KEY_c0183=media # HUT says consumer control configuration, kbd says Media Center KEYBOARD_KEY_c0183=media # HUT says consumer control configuration, kbd says Media Center
KEYBOARD_KEY_c100e=images # Camera icon, "Photo Gallery" KEYBOARD_KEY_c100e=images # Camera icon, "Photo Gallery"
KEYBOARD_KEY_c100f=config # Window with gear icon KEYBOARD_KEY_c100f=config # Window with gear icon
@ -1042,12 +1044,12 @@ evdev:input:b0005v046DpB30B*
KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4 KEYBOARD_KEY_c103b=prog4 # Smartkey D → XF86Launch4
# Logitech K811 # Logitech K811
evdev:input:b0005v046DpB317* evdev:input:b0005v046DpB317:*
KEYBOARD_KEY_70047=brightnessdown KEYBOARD_KEY_70047=brightnessdown
KEYBOARD_KEY_70048=brightnessup KEYBOARD_KEY_70048=brightnessup
# iTouch # iTouch
evdev:input:b0003v046DpC308* evdev:input:b0003v046DpC308:*
KEYBOARD_KEY_90001=shop # Shopping KEYBOARD_KEY_90001=shop # Shopping
KEYBOARD_KEY_90002=config # iTouch KEYBOARD_KEY_90002=config # iTouch
KEYBOARD_KEY_90003=finance # Finance KEYBOARD_KEY_90003=finance # Finance
@ -1056,12 +1058,12 @@ evdev:input:b0003v046DpC308*
KEYBOARD_KEY_c0183=media # Media KEYBOARD_KEY_c0183=media # Media
# Cordless Desktop S510 # Cordless Desktop S510
evdev:input:b0003v046DpC50C* evdev:input:b0003v046DpC50C:*
KEYBOARD_KEY_d4=up # zoomin KEYBOARD_KEY_d4=up # zoomin
KEYBOARD_KEY_cc=down # zoomout KEYBOARD_KEY_cc=down # zoomout
# Wave cordless # Wave cordless
evdev:input:b0003v046DpC317* evdev:input:b0003v046DpC317:*
KEYBOARD_KEY_9001c=scale # expo KEYBOARD_KEY_9001c=scale # expo
KEYBOARD_KEY_9001f=down # zoomout KEYBOARD_KEY_9001f=down # zoomout
KEYBOARD_KEY_90020=up # zoomin KEYBOARD_KEY_90020=up # zoomin
@ -1080,7 +1082,7 @@ evdev:input:b0003v046DpC317*
KEYBOARD_KEY_9004c=ejectclosecd KEYBOARD_KEY_9004c=ejectclosecd
# Wave cordless # Wave cordless
evdev:input:b0003v046DpC517* evdev:input:b0003v046DpC517:*
KEYBOARD_KEY_c101f=down # zoomout KEYBOARD_KEY_c101f=down # zoomout
KEYBOARD_KEY_c1020=up # zoomin KEYBOARD_KEY_c1020=up # zoomin
KEYBOARD_KEY_c1005=camera KEYBOARD_KEY_c1005=camera
@ -1096,7 +1098,7 @@ evdev:input:b0003v046DpC517*
KEYBOARD_KEY_c104c=ejectclosecd KEYBOARD_KEY_c104c=ejectclosecd
# Cordless Wave Pro # Cordless Wave Pro
evdev:input:b0003v046DpC529* evdev:input:b0003v046DpC529:*
KEYBOARD_KEY_0c01b6=camera KEYBOARD_KEY_0c01b6=camera
KEYBOARD_KEY_0c0183=media KEYBOARD_KEY_0c0183=media
KEYBOARD_KEY_0c0184=wordprocessor KEYBOARD_KEY_0c0184=wordprocessor
@ -1111,13 +1113,13 @@ evdev:input:b0003v046DpC529*
KEYBOARD_KEY_0c022e=down # zoomout KEYBOARD_KEY_0c022e=down # zoomout
# Logitech Presenter R400 # Logitech Presenter R400
evdev:input:b0003v046DpC52D* evdev:input:b0003v046DpC52D:*
KEYBOARD_KEY_070029=presentation KEYBOARD_KEY_070029=presentation
KEYBOARD_KEY_07003e=presentation KEYBOARD_KEY_07003e=presentation
KEYBOARD_KEY_070037=displaytoggle KEYBOARD_KEY_070037=displaytoggle
# Internet Navigator # Internet Navigator
evdev:input:b0003v046DpC309* evdev:input:b0003v046DpC309:*
KEYBOARD_KEY_90001=chat # Messenger/SMS KEYBOARD_KEY_90001=chat # Messenger/SMS
KEYBOARD_KEY_90002=camera # webcam KEYBOARD_KEY_90002=camera # webcam
KEYBOARD_KEY_90003=prog1 # iTouch KEYBOARD_KEY_90003=prog1 # iTouch
@ -1189,12 +1191,12 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnMedion*:pnErazer*:*
########################################################### ###########################################################
# Microsoft Natural Ergonomic Keyboard 4000 # Microsoft Natural Ergonomic Keyboard 4000
evdev:input:b0003v045Ep00DB* evdev:input:b0003v045Ep00DB:*
KEYBOARD_KEY_c022d=up # zoomin KEYBOARD_KEY_c022d=up # zoomin
KEYBOARD_KEY_c022e=down # zoomout KEYBOARD_KEY_c022e=down # zoomout
# Microsoft (Razer produced) Reclusa keyboard # Microsoft (Razer produced) Reclusa keyboard
evdev:input:b0003v1532p0200* evdev:input:b0003v1532p0200:*
KEYBOARD_KEY_c01c9=shuffle KEYBOARD_KEY_c01c9=shuffle
KEYBOARD_KEY_c01ca=up # zoomin KEYBOARD_KEY_c01ca=up # zoomin
KEYBOARD_KEY_c01cb=down # zoomout KEYBOARD_KEY_c01cb=down # zoomout
@ -1257,7 +1259,7 @@ evdev:name:MSI Laptop hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnM[iI][cC][rR][oO]-S[tT][a
########################################################### ###########################################################
# Teres-I # Teres-I
evdev:input:b0003v15BAp003C* evdev:input:b0003v15BAp003C:*
KEYBOARD_KEY_70066=sleep # Fn+F1 KEYBOARD_KEY_70066=sleep # Fn+F1
KEYBOARD_KEY_700f6=wlan # Fn+F2 KEYBOARD_KEY_700f6=wlan # Fn+F2
KEYBOARD_KEY_700c7=f21 # Fn+F3 touchpad toggle KEYBOARD_KEY_700c7=f21 # Fn+F3 touchpad toggle
@ -1369,7 +1371,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnOQO*Inc.*:pnOQO*Model*2*:*
# The key code identifiers used below exactly match the text # The key code identifiers used below exactly match the text
# labels on the keys/buttons (or standard icons on the buttons # labels on the keys/buttons (or standard icons on the buttons
# that have no text labels), except as noted. # that have no text labels), except as noted.
evdev:input:b0003v05A4p9735* evdev:input:b0003v05A4p9735:*
KEYBOARD_KEY_c0015=back KEYBOARD_KEY_c0015=back
KEYBOARD_KEY_c0012=forward KEYBOARD_KEY_c0012=forward
KEYBOARD_KEY_c000c=stop KEYBOARD_KEY_c000c=stop
@ -1400,7 +1402,7 @@ evdev:input:b0003v05A4p9735*
########################################################### ###########################################################
# Plantronics .Audio 626 DSP # Plantronics .Audio 626 DSP
evdev:input:b0003v047FpC006* evdev:input:b0003v047FpC006:*
KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute KEYBOARD_KEY_b002f=f20 # Microphone mute button; should be micmute
########################################################### ###########################################################
@ -1697,7 +1699,7 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnZepto:pnZnote*6615WD:*
########################################## ##########################################
# Ideazon Zboard Merc # Ideazon Zboard Merc
evdev:input:b0003v1038p0210* evdev:input:b0003v1038p0210:*
KEYBOARD_KEY_c0227=q KEYBOARD_KEY_c0227=q
KEYBOARD_KEY_c0223=w KEYBOARD_KEY_c0223=w
KEYBOARD_KEY_c0221=e KEYBOARD_KEY_c0221=e
@ -1735,7 +1737,7 @@ evdev:input:b0003v1038p0210*
KEYBOARD_KEY_70079=f6 KEYBOARD_KEY_70079=f6
# Ideazon Zboard Fang # Ideazon Zboard Fang
evdev:input:b0003v1038p0310* evdev:input:b0003v1038p0310:*
KEYBOARD_KEY_70059=1 KEYBOARD_KEY_70059=1
KEYBOARD_KEY_7005b=3 KEYBOARD_KEY_7005b=3
KEYBOARD_KEY_70040=equal KEYBOARD_KEY_70040=equal
@ -1787,13 +1789,13 @@ evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDIXONSP:pnDIXON*:*
# with an accompanying variant (defined with XKB_FIXED_VARIANT) if necessary. # with an accompanying variant (defined with XKB_FIXED_VARIANT) if necessary.
# Yubico Yubico Yubikey II" # Yubico Yubico Yubikey II"
evdev:input:b0003v1050p0010* evdev:input:b0003v1050p0010:*
# Yubico Yubikey NEO OTP+CCID # Yubico Yubikey NEO OTP+CCID
evdev:input:b0003v1050p0111* evdev:input:b0003v1050p0111:*
# Yubico Yubikey NEO OTP+U2F+CCID # Yubico Yubikey NEO OTP+U2F+CCID
evdev:input:b0003v1050p0116* evdev:input:b0003v1050p0116:*
# OKE Electron Company USB barcode reader # OKE Electron Company USB barcode reader
evdev:input:b0003v05FEp1010* evdev:input:b0003v05FEp1010:*
XKB_FIXED_LAYOUT=us XKB_FIXED_LAYOUT=us
XKB_FIXED_VARIANT= XKB_FIXED_VARIANT=
@ -1806,12 +1808,12 @@ evdev:input:b0003v05FEp1010*
# Presence of a LED is implicit when the property is absent. # Presence of a LED is implicit when the property is absent.
# Logitech K750 # Logitech K750
evdev:input:b0003v046Dp4002* evdev:input:b0003v046Dp4002:*
KEYBOARD_LED_NUMLOCK=0 KEYBOARD_LED_NUMLOCK=0
KEYBOARD_LED_CAPSLOCK=0 KEYBOARD_LED_CAPSLOCK=0
# PFU Limited HHKB Professional JP # PFU Limited HHKB Professional JP
evdev:input:b0003v04FEp000D* evdev:input:b0003v04FEp000D:*
KEYBOARD_LED_NUMLOCK=0 KEYBOARD_LED_NUMLOCK=0
KEYBOARD_LED_CAPSLOCK=0 KEYBOARD_LED_CAPSLOCK=0

View File

@ -67,6 +67,8 @@
# or 'display'. The default, when unset, is equivalent to: # or 'display'. The default, when unset, is equivalent to:
# ACCEL_LOCATION=display # ACCEL_LOCATION=display
# #
# All matches should end in ':*' to allow future expansions of the match key.
# Sort by brand, model # Sort by brand, model
######################################### #########################################

View File

@ -36,6 +36,8 @@
# #
# If the property is missing, user-space can assume: # If the property is missing, user-space can assume:
# ID_INPUT_JOYSTICK_INTEGRATION=external # ID_INPUT_JOYSTICK_INTEGRATION=external
#
# All matches should end in ':*' to allow future expansions of the match key.
joystick:bluetooth:* joystick:bluetooth:*
ID_INPUT_JOYSTICK_INTEGRATION=external ID_INPUT_JOYSTICK_INTEGRATION=external
@ -45,6 +47,6 @@ joystick:bluetooth:*
########################################################### ###########################################################
# GPD Win, Classic and XBox 360 compat modes # GPD Win, Classic and XBox 360 compat modes
joystick:usb:v11c5p5507* joystick:usb:v11c5p5507:*
joystick:usb:v045ep028e* joystick:usb:v045ep028e:*
ID_INPUT_JOYSTICK_INTEGRATION=internal ID_INPUT_JOYSTICK_INTEGRATION=internal

View File

@ -13,7 +13,7 @@
# #
# Supported hardware matches are: # Supported hardware matches are:
# - Generic input devices match: # - Generic input devices match:
# evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV # evdev:input:bZZZZvYYYYpXXXXeWWWW-VVVV:*
# This matches on the kernel modalias of the input-device, mainly: # This matches on the kernel modalias of the input-device, mainly:
# ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and # ZZZZ is the bus-id (see /usr/include/linux/input.h BUS_*), YYYY, XXXX and
# WWW are the 4-digit hex uppercase vendor, product and version ID and VVVV # WWW are the 4-digit hex uppercase vendor, product and version ID and VVVV
@ -27,6 +27,8 @@
# <vendor> is the firmware-provided string from the kernel DMI modalias, # <vendor> is the firmware-provided string from the kernel DMI modalias,
# see /sys/class/dmi/id/modalias # see /sys/class/dmi/id/modalias
# #
# All matches should end in ':*' to allow future expansions of the match key.
#
# To add local entries, create a new file # To add local entries, create a new file
# /etc/udev/hwdb.d/71-pointingstick-local.hwdb # /etc/udev/hwdb.d/71-pointingstick-local.hwdb
# and add your rules there. To load the new rules execute (as root): # and add your rules there. To load the new rules execute (as root):
@ -155,6 +157,6 @@ evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPadX20?
POINTINGSTICK_CONST_ACCEL=1.25 POINTINGSTICK_CONST_ACCEL=1.25
# Lenovo UltraNav SK-8845 (USB keyboard) # Lenovo UltraNav SK-8845 (USB keyboard)
evdev:input:b0003v06CBp0009* evdev:input:b0003v06CBp0009:*
POINTINGSTICK_CONST_ACCEL=2.5 POINTINGSTICK_CONST_ACCEL=2.5
POINTINGSTICK_SENSITIVITY=200 POINTINGSTICK_SENSITIVITY=200

View File

@ -15,6 +15,8 @@
# #
# vid/pid as 4-digit hex lowercase vendor/product # vid/pid as 4-digit hex lowercase vendor/product
# #
# All matches should end in ':*' to allow future expansions of the match key.
#
# To add local entries, create a new file # To add local entries, create a new file
# /etc/udev/hwdb.d/71-touchpad-local.hwdb # /etc/udev/hwdb.d/71-touchpad-local.hwdb
# and add your rules there. To load the new rules execute (as root): # and add your rules there. To load the new rules execute (as root):
@ -59,11 +61,11 @@ touchpad:usb:v044ep1221:*
########################################################### ###########################################################
# Logitech # Logitech
########################################################### ###########################################################
touchpad:usb:v046d* touchpad:usb:v046dp????:*
ID_INPUT_TOUCHPAD_INTEGRATION=external ID_INPUT_TOUCHPAD_INTEGRATION=external
########################################################### ###########################################################
# Wacom # Wacom
########################################################### ###########################################################
touchpad:usb:v056a* touchpad:usb:v056ap????:*
ID_INPUT_TOUCHPAD_INTEGRATION=external ID_INPUT_TOUCHPAD_INTEGRATION=external

View File

@ -202,8 +202,9 @@ def check_matches(groups):
except ParseBaseException as e: except ParseBaseException as e:
error('Pattern {!r} is invalid: {}', rest, e) error('Pattern {!r} is invalid: {}', rest, e)
continue continue
if rest[-1] not in '*:':
error('pattern {} does not end with "*" or ":"', match) if not rest.endswith(':*'):
error("pattern {!r} does not end with ':*'", match)
matches.sort() matches.sort()
prev = None prev = None

View File

@ -173,7 +173,7 @@
<citerefentry><refentrytitle>udev_enumerate_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>udev_enumerate_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>udev_monitor_new_from_netlink</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>udev_monitor_new_from_netlink</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>udev_list_entry</refentrytitle><manvolnum>3</manvolnum></citerefentry>, <citerefentry><refentrytitle>udev_list_entry</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry> <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
</para> </para>
</refsect1> </refsect1>

View File

@ -133,7 +133,6 @@ static int open_label_db(void) {
int mac_selinux_init(void) { int mac_selinux_init(void) {
#if HAVE_SELINUX #if HAVE_SELINUX
int r; int r;
bool have_status_page = false;
if (initialized) if (initialized)
return 0; return 0;
@ -141,15 +140,9 @@ int mac_selinux_init(void) {
if (!mac_selinux_use()) if (!mac_selinux_use())
return 0; return 0;
r = selinux_status_open(/* netlink fallback */ 1); r = selinux_status_open(/* no netlink fallback */ 0);
if (r < 0) { if (r < 0)
if (!ERRNO_IS_PRIVILEGE(errno)) return log_enforcing_errno(errno, "Failed to open SELinux status page: %m");
return log_enforcing_errno(errno, "Failed to open SELinux status page: %m");
log_warning_errno(errno, "selinux_status_open() with netlink fallback failed, not checking for policy reloads: %m");
} else if (r == 1)
log_warning("selinux_status_open() failed to open the status page, using the netlink fallback.");
else
have_status_page = true;
r = open_label_db(); r = open_label_db();
if (r < 0) { if (r < 0) {
@ -157,14 +150,13 @@ int mac_selinux_init(void) {
return r; return r;
} }
/* Save the current policyload sequence number, so mac_selinux_maybe_reload() does not trigger on /* save the current policyload sequence number, so `mac_selinux_maybe_reload()` does
* first call without any actual change. */ not trigger on first call without any actual change */
last_policyload = selinux_status_policyload(); last_policyload = selinux_status_policyload();
if (have_status_page) /* now that the SELinux status page has been successfully opened,
/* Now that the SELinux status page has been successfully opened, retrieve the enforcing retrieve the enforcing status over it (to avoid system calls in `security_getenforce()`) */
* status over it (to avoid system calls in security_getenforce()). */ enforcing_status_func = selinux_status_getenforce;
enforcing_status_func = selinux_status_getenforce;
initialized = true; initialized = true;
#endif #endif

View File

@ -49,7 +49,16 @@ static int sigaction_many_ap(const struct sigaction *sa, int sig, va_list ap) {
int r = 0; int r = 0;
/* negative signal ends the list. 0 signal is skipped. */ /* negative signal ends the list. 0 signal is skipped. */
for (; sig >= 0; sig = va_arg(ap, int)) {
if (sig < 0)
return 0;
if (sig > 0) {
if (sigaction(sig, sa, NULL) < 0)
r = -errno;
}
while ((sig = va_arg(ap, int)) >= 0) {
if (sig == 0) if (sig == 0)
continue; continue;

View File

@ -145,32 +145,57 @@ char *strnappend(const char *s, const char *suffix, size_t b) {
char *strjoin_real(const char *x, ...) { char *strjoin_real(const char *x, ...) {
va_list ap; va_list ap;
size_t l = 1; size_t l;
char *r, *p; char *r, *p;
va_start(ap, x); va_start(ap, x);
for (const char *t = x; t; t = va_arg(ap, const char *)) {
size_t n;
n = strlen(t); if (x) {
if (n > SIZE_MAX - l) { l = strlen(x);
va_end(ap);
return NULL; for (;;) {
const char *t;
size_t n;
t = va_arg(ap, const char *);
if (!t)
break;
n = strlen(t);
if (n > ((size_t) -1) - l) {
va_end(ap);
return NULL;
}
l += n;
} }
l += n; } else
} l = 0;
va_end(ap); va_end(ap);
p = r = new(char, l); r = new(char, l+1);
if (!r) if (!r)
return NULL; return NULL;
va_start(ap, x); if (x) {
for (const char *t = x; t; t = va_arg(ap, const char *)) p = stpcpy(r, x);
p = stpcpy(p, t);
va_end(ap);
*p = 0; va_start(ap, x);
for (;;) {
const char *t;
t = va_arg(ap, const char *);
if (!t)
break;
p = stpcpy(p, t);
}
va_end(ap);
} else
r[0] = 0;
return r; return r;
} }

View File

@ -123,6 +123,7 @@ size_t strv_length(char * const *l) {
} }
char **strv_new_ap(const char *x, va_list ap) { char **strv_new_ap(const char *x, va_list ap) {
const char *s;
_cleanup_strv_free_ char **a = NULL; _cleanup_strv_free_ char **a = NULL;
size_t n = 0, i = 0; size_t n = 0, i = 0;
va_list aq; va_list aq;
@ -132,28 +133,43 @@ char **strv_new_ap(const char *x, va_list ap) {
* STRV_IFNOTNULL() macro to include possibly NULL strings in * STRV_IFNOTNULL() macro to include possibly NULL strings in
* the string list. */ * the string list. */
va_copy(aq, ap); if (x) {
for (const char *s = x; s; s = va_arg(aq, const char*)) { n = x == STRV_IGNORE ? 0 : 1;
if (s == STRV_IGNORE)
continue;
n++; va_copy(aq, ap);
while ((s = va_arg(aq, const char*))) {
if (s == STRV_IGNORE)
continue;
n++;
}
va_end(aq);
} }
va_end(aq);
a = new(char*, n+1); a = new(char*, n+1);
if (!a) if (!a)
return NULL; return NULL;
for (const char *s = x; s; s = va_arg(ap, const char*)) { if (x) {
if (s == STRV_IGNORE) if (x != STRV_IGNORE) {
continue; a[i] = strdup(x);
if (!a[i])
return NULL;
i++;
}
a[i] = strdup(s); while ((s = va_arg(ap, const char*))) {
if (!a[i])
return NULL;
i++; if (s == STRV_IGNORE)
continue;
a[i] = strdup(s);
if (!a[i])
return NULL;
i++;
}
} }
a[i] = NULL; a[i] = NULL;

View File

@ -355,7 +355,7 @@ _public_ int sd_uid_is_on_seat(uid_t uid, int require_active, const char *seat)
char t[DECIMAL_STR_MAX(uid_t)]; char t[DECIMAL_STR_MAX(uid_t)];
xsprintf(t, UID_FMT, uid); xsprintf(t, UID_FMT, uid);
return string_contains_word(content, NULL, t); return string_contains_word(content, ",", t);
} }
static int uid_get_array(uid_t uid, const char *variable, char ***array) { static int uid_get_array(uid_t uid, const char *variable, char ***array) {

View File

@ -11,9 +11,6 @@
DnsAnswer *dns_answer_new(size_t n) { DnsAnswer *dns_answer_new(size_t n) {
DnsAnswer *a; DnsAnswer *a;
if (n > UINT16_MAX) /* We can only place 64K RRs in an answer at max */
n = UINT16_MAX;
a = malloc0(offsetof(DnsAnswer, items) + sizeof(DnsAnswerItem) * n); a = malloc0(offsetof(DnsAnswer, items) + sizeof(DnsAnswerItem) * n);
if (!a) if (!a)
return NULL; return NULL;
@ -627,16 +624,12 @@ int dns_answer_reserve(DnsAnswer **a, size_t n_free) {
return -EBUSY; return -EBUSY;
ns = (*a)->n_rrs + n_free; ns = (*a)->n_rrs + n_free;
if (ns > UINT16_MAX) /* Maximum number of RRs we can stick into a DNS packet section */
ns = UINT16_MAX;
if ((*a)->n_allocated >= ns) if ((*a)->n_allocated >= ns)
return 0; return 0;
/* Allocate more than we need */ /* Allocate more than we need */
ns *= 2; ns *= 2;
if (ns > UINT16_MAX)
ns = UINT16_MAX;
n = realloc(*a, offsetof(DnsAnswer, items) + sizeof(DnsAnswerItem) * ns); n = realloc(*a, offsetof(DnsAnswer, items) + sizeof(DnsAnswerItem) * ns);
if (!n) if (!n)
@ -713,7 +706,7 @@ void dns_answer_dump(DnsAnswer *answer, FILE *f) {
fputs("\t;", f); fputs("\t;", f);
if (ifindex != 0) if (ifindex != 0)
fprintf(f, " ifindex=%i", ifindex); printf(" ifindex=%i", ifindex);
if (flags & DNS_ANSWER_AUTHENTICATED) if (flags & DNS_ANSWER_AUTHENTICATED)
fputs(" authenticated", f); fputs(" authenticated", f);
if (flags & DNS_ANSWER_CACHEABLE) if (flags & DNS_ANSWER_CACHEABLE)

View File

@ -1813,8 +1813,6 @@ int dnssec_nsec_test(DnsAnswer *answer, DnsResourceKey *key, DnssecNsecResult *r
/* The following checks only make sense for NSEC RRs that are not expanded from a wildcard */ /* The following checks only make sense for NSEC RRs that are not expanded from a wildcard */
r = dns_resource_record_is_synthetic(rr); r = dns_resource_record_is_synthetic(rr);
if (r == -ENODATA) /* No signing RR known. */
continue;
if (r < 0) if (r < 0)
return r; return r;
if (r > 0) if (r > 0)

View File

@ -8,8 +8,7 @@
DnsQuestion *dns_question_new(size_t n) { DnsQuestion *dns_question_new(size_t n) {
DnsQuestion *q; DnsQuestion *q;
if (n > UINT16_MAX) /* We can only place 64K key in an question section at max */ assert(n > 0);
n = UINT16_MAX;
q = malloc0(offsetof(DnsQuestion, keys) + sizeof(DnsResourceKey*) * n); q = malloc0(offsetof(DnsQuestion, keys) + sizeof(DnsResourceKey*) * n);
if (!q) if (!q)

View File

@ -1650,7 +1650,7 @@ DnsResourceRecord *dns_resource_record_copy(DnsResourceRecord *rr) {
return NULL; return NULL;
copy->nsec3.salt_size = rr->nsec3.salt_size; copy->nsec3.salt_size = rr->nsec3.salt_size;
copy->nsec3.next_hashed_name = memdup(rr->nsec3.next_hashed_name, rr->nsec3.next_hashed_name_size); copy->nsec3.next_hashed_name = memdup(rr->nsec3.next_hashed_name, rr->nsec3.next_hashed_name_size);
if (!copy->nsec3.next_hashed_name) if (!copy->nsec3.next_hashed_name_size)
return NULL; return NULL;
copy->nsec3.next_hashed_name_size = rr->nsec3.next_hashed_name_size; copy->nsec3.next_hashed_name_size = rr->nsec3.next_hashed_name_size;
copy->nsec3.types = bitmap_copy(rr->nsec3.types); copy->nsec3.types = bitmap_copy(rr->nsec3.types);

View File

@ -1156,16 +1156,12 @@ bool dns_scope_name_wants_search_domain(DnsScope *s, const char *name) {
bool dns_scope_network_good(DnsScope *s) { bool dns_scope_network_good(DnsScope *s) {
/* Checks whether the network is in good state for lookups on this scope. For mDNS/LLMNR/Classic DNS scopes /* Checks whether the network is in good state for lookups on this scope. For mDNS/LLMNR/Classic DNS scopes
* bound to links this is easy, as they don't even exist if the link isn't in a suitable state. For the global * bound to links this is easy, as they don't even exist if the link isn't in a suitable state. For the global
* DNS scope we check whether there are any links that are up and have an address. * DNS scope we check whether there are any links that are up and have an address. */
*
* Note that Linux routing is complex and even systems that superficially have no IPv4 address might
* be able to route IPv4 (and similar for IPv6), hence let's make a check here independent of address
* family. */
if (s->link) if (s->link)
return true; return true;
return manager_routable(s->manager); return manager_routable(s->manager, AF_UNSPEC);
} }
int dns_scope_ifindex(DnsScope *s) { int dns_scope_ifindex(DnsScope *s) {

View File

@ -1418,15 +1418,15 @@ void manager_dnssec_verdict(Manager *m, DnssecVerdict verdict, const DnsResource
m->n_dnssec_verdict[verdict]++; m->n_dnssec_verdict[verdict]++;
} }
bool manager_routable(Manager *m) { bool manager_routable(Manager *m, int family) {
Link *l; Link *l;
assert(m); assert(m);
/* Returns true if the host has at least one interface with a routable address (regardless if IPv4 or IPv6) */ /* Returns true if the host has at least one interface with a routable address of the specified type */
HASHMAP_FOREACH(l, m->links) HASHMAP_FOREACH(l, m->links)
if (link_relevant(l, AF_UNSPEC, false)) if (link_relevant(l, family, false))
return true; return true;
return false; return false;

View File

@ -185,7 +185,7 @@ DnsOverTlsMode manager_get_dns_over_tls_mode(Manager *m);
void manager_dnssec_verdict(Manager *m, DnssecVerdict verdict, const DnsResourceKey *key); void manager_dnssec_verdict(Manager *m, DnssecVerdict verdict, const DnsResourceKey *key);
bool manager_routable(Manager *m); bool manager_routable(Manager *m, int family);
void manager_flush_caches(Manager *m); void manager_flush_caches(Manager *m);
void manager_reset_server_features(Manager *m); void manager_reset_server_features(Manager *m);

View File

@ -383,6 +383,7 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
"clock_settime\0" "clock_settime\0"
"clock_settime64\0" "clock_settime64\0"
"settimeofday\0" "settimeofday\0"
"stime\0"
}, },
[SYSCALL_FILTER_SET_CPU_EMULATION] = { [SYSCALL_FILTER_SET_CPU_EMULATION] = {
.name = "@cpu-emulation", .name = "@cpu-emulation",
@ -638,7 +639,6 @@ const SyscallFilterSet syscall_filter_sets[_SYSCALL_FILTER_SET_MAX] = {
"security\0" "security\0"
"sgetmask\0" "sgetmask\0"
"ssetmask\0" "ssetmask\0"
"stime\0"
"stty\0" "stty\0"
"sysfs\0" "sysfs\0"
"tuxcall\0" "tuxcall\0"

View File

@ -7,18 +7,18 @@
import chromiumos.gen_autosuspend_rules import chromiumos.gen_autosuspend_rules
print('# pci:v<00VENDOR>d<00DEVICE> (8 uppercase hexadecimal digits twice)') print('# pci:v<00VENDOR>d<00DEVICE>:* (8 uppercase hexadecimal digits twice)')
for entry in chromiumos.gen_autosuspend_rules.PCI_IDS: for entry in chromiumos.gen_autosuspend_rules.PCI_IDS:
vendor, device = entry.split(':') vendor, device = entry.split(':')
vendor = int(vendor, 16) vendor = int(vendor, 16)
device = int(device, 16) device = int(device, 16)
print('pci:v{:08X}d{:08X}*'.format(vendor, device)) print('pci:v{:08X}d{:08X}:*'.format(vendor, device))
print('# usb:v<VEND>p<PROD> (4 uppercase hexadecimal digits twice)') print('# usb:v<VEND>p<PROD>:* (4 uppercase hexadecimal digits twice)')
for entry in chromiumos.gen_autosuspend_rules.USB_IDS: for entry in chromiumos.gen_autosuspend_rules.USB_IDS:
vendor, product = entry.split(':') vendor, product = entry.split(':')
vendor = int(vendor, 16) vendor = int(vendor, 16)
product = int(product, 16) product = int(product, 16)
print('usb:v{:04X}p{:04X}*'.format(vendor, product)) print('usb:v{:04X}p{:04X}:*'.format(vendor, product))
print(' ID_AUTOSUSPEND=1') print(' ID_AUTOSUSPEND=1')