diff options
61 files changed, 1182 insertions, 388 deletions
diff --git a/.gitignore b/.gitignore index 9ff6da28d9..64e7da95fe 100644 --- a/.gitignore +++ b/.gitignore @@ -137,6 +137,8 @@ /tags /test-architecture /test-audit-type +/test-af-list +/test-arphrd-list /test-async /test-barrier /test-bitmap diff --git a/CODING_STYLE b/CODING_STYLE index dbadfbdb54..a96ddd3598 100644 --- a/CODING_STYLE +++ b/CODING_STYLE @@ -314,3 +314,10 @@ are always defined after more global ones. Thus, our local definitions will never "leak" into the global header files, possibly altering their effect due to #ifdeffery. + +- To implement an endless loop, use "for (;;)" rather than "while + (1)". The latter is a bit ugly anyway, since you probably really + meant "while (true)"... To avoid the discussion what the right + always-true expression for an infinite while() loop is our + recommendation is to simply write it without any such expression by + using "for (;;)". diff --git a/Makefile.am b/Makefile.am index 4953d8d782..7cfa527f6f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -43,7 +43,7 @@ LIBUDEV_REVISION=4 LIBUDEV_AGE=6 LIBSYSTEMD_CURRENT=10 -LIBSYSTEMD_REVISION=0 +LIBSYSTEMD_REVISION=1 LIBSYSTEMD_AGE=10 # The following four libraries only exist for compatibility reasons, @@ -1437,6 +1437,8 @@ tests += \ test-cap-list \ test-sigbus \ test-verbs \ + test-af-list \ + test-arphrd-list \ test-dns-domain EXTRA_DIST += \ @@ -2047,6 +2049,18 @@ test_bus_policy_LDADD = \ libbus-proxy-core.la \ libshared.la +test_af_list_SOURCES = \ + src/test/test-af-list.c + +test_af_list_LDADD = \ + libbasic.la + +test_arphrd_list_SOURCES = \ + src/test/test-arphrd-list.c + +test_arphrd_list_LDADD = \ + libbasic.la + # ------------------------------------------------------------------------------ ## .PHONY so it always rebuilds it .PHONY: coverage lcov-run lcov-report coverage-sync @@ -1,5 +1,20 @@ systemd System and Service Manager +CHANGES WITH 224: + + * The systemd-efi-boot-generator functionality was merged into + systemd-gpt-auto-generator. + + * systemd-networkd now supports Group Policy for vxlan devices. It can + be enabled via the new boolean configuration option called + 'GroupPolicyExtension='. + + Contributions from: Andreas Kempf, Christian Hesse, Daniel Mack, David + Herrmann, Herman Fries, Johannes Nixdorf, Kay Sievers, Lennart + Poettering, Peter Hutterer, Susant Sahani, Tom Gundersen + + -- Berlin, 2015-07-31 + CHANGES WITH 223: * The python-systemd code has been removed from the systemd repository. diff --git a/configure.ac b/configure.ac index a16ca6396b..f1ce9ff300 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([systemd], - [223], + [224], [http://github.com/systemd/systemd/issues], [systemd], [http://www.freedesktop.org/wiki/Software/systemd]) @@ -1151,10 +1151,10 @@ AS_IF([test "x$enable_gnuefi" != "xno"], [ have_efi_lds=no AC_ARG_WITH(efi-ldsdir, AS_HELP_STRING([--with-efi-ldsdir=PATH], [Path to EFI lds directory]), - [EFI_LDS_DIR="$withval" && AC_CHECK_FILE([${EFI_LDS_DIR}/elf_${EFI_ARCH}_efi.lds], + [EFI_LDS_DIR="$withval" && AS_IF([test -f "${EFI_LDS_DIR}/elf_${EFI_ARCH}_efi.lds"], [have_efi_lds=yes])], [AS_FOR([DIR], [EFI_LDS_DIR], ["${EFI_LIB_DIR}/gnuefi" "${EFI_LIB_DIR}"], - [AC_CHECK_FILE([${EFI_LDS_DIR}/elf_${EFI_ARCH}_efi.lds], + [AS_IF([test -f "${EFI_LDS_DIR}/elf_${EFI_ARCH}_efi.lds"], [have_efi_lds=yes && break])])]) AS_IF([test "x$have_efi_lds" = xyes], [AC_SUBST([EFI_LDS_DIR])], diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index cbf70da880..eb34e3efcc 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -23990,7 +23990,7 @@ OUI:000D96* ID_OUI_FROM_DATABASE=Vtera Technology Inc. OUI:000D97* - ID_OUI_FROM_DATABASE=Tropos Networks, Inc. + ID_OUI_FROM_DATABASE=ABB Inc./Tropos OUI:000D98* ID_OUI_FROM_DATABASE=S.W.A.C. Schmitt-Walter Automation Consult GmbH @@ -38138,7 +38138,7 @@ OUI:00200E* ID_OUI_FROM_DATABASE=SATELLITE TECHNOLOGY MGMT, INC OUI:00200F* - ID_OUI_FROM_DATABASE=TANBAC CO., LTD. + ID_OUI_FROM_DATABASE=EBRAINS Inc OUI:002010* ID_OUI_FROM_DATABASE=JEOL SYSTEM TECHNOLOGY CO. LTD @@ -40385,7 +40385,7 @@ OUI:0022FE* ID_OUI_FROM_DATABASE=Advanced Illumination OUI:0022FF* - ID_OUI_FROM_DATABASE=iWDL Technologies + ID_OUI_FROM_DATABASE=NIVIS LLC OUI:002300* ID_OUI_FROM_DATABASE=Cayee Computer Ltd. @@ -45856,6 +45856,9 @@ OUI:005218* OUI:0054AF* ID_OUI_FROM_DATABASE=Continental Automotive Systems Inc. +OUI:0055DA* + ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information. + OUI:005907* ID_OUI_FROM_DATABASE=LenovoEMC Products USA, LLC @@ -46657,6 +46660,9 @@ OUI:006B9E* OUI:006BA0* ID_OUI_FROM_DATABASE=SHENZHEN UNIVERSAL INTELLISYS PTE LTD +OUI:006D52* + ID_OUI_FROM_DATABASE=Apple + OUI:006DFB* ID_OUI_FROM_DATABASE=Vutrix (UK) Ltd @@ -51862,6 +51868,9 @@ OUI:045FA7* OUI:046169* ID_OUI_FROM_DATABASE=MEDIA GLOBAL LINKS CO., LTD. +OUI:046273* + ID_OUI_FROM_DATABASE=Cisco Systems + OUI:0462D7* ID_OUI_FROM_DATABASE=ALSTOM HYDRO FRANCE @@ -51874,6 +51883,9 @@ OUI:046785* OUI:0469F8* ID_OUI_FROM_DATABASE=Apple +OUI:046C9D* + ID_OUI_FROM_DATABASE=Cisco Systems + OUI:046D42* ID_OUI_FROM_DATABASE=Bryston Ltd. @@ -52534,6 +52546,9 @@ OUI:0808EA* OUI:0809B6* ID_OUI_FROM_DATABASE=Masimo Corp +OUI:080A4E* + ID_OUI_FROM_DATABASE=Planet Bingo® — 3rd Rock Gaming® + OUI:080C0B* ID_OUI_FROM_DATABASE=SysMik GmbH Dresden @@ -52640,7 +52655,7 @@ OUI:084027* ID_OUI_FROM_DATABASE=Gridstore Inc. OUI:084656* - ID_OUI_FROM_DATABASE=VODALYS Ingénierie + ID_OUI_FROM_DATABASE=VEO-LABS OUI:08482C* ID_OUI_FROM_DATABASE=Raycore Taiwan Co., LTD. @@ -52735,6 +52750,9 @@ OUI:0881F4* OUI:08863B* ID_OUI_FROM_DATABASE=Belkin International, Inc. +OUI:088C2C* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:088DC8* ID_OUI_FROM_DATABASE=Ryowa Electronics Co.,Ltd @@ -52927,6 +52945,9 @@ OUI:0C17F1* OUI:0C191F* ID_OUI_FROM_DATABASE=Inform Electronik +OUI:0C1A10* + ID_OUI_FROM_DATABASE=Acoustic Stream + OUI:0C1DAF* ID_OUI_FROM_DATABASE=Beijing Xiaomi communications co.,ltd @@ -52996,6 +53017,9 @@ OUI:0C51F7* OUI:0C54A5* ID_OUI_FROM_DATABASE=PEGATRON CORPORATION +OUI:0C54B9* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + OUI:0C5521* ID_OUI_FROM_DATABASE=Axiros GmbH @@ -53065,6 +53089,9 @@ OUI:0C84DC* OUI:0C8525* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:0C8610* + ID_OUI_FROM_DATABASE=Juniper networks + OUI:0C8910* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD @@ -54556,6 +54583,9 @@ OUI:1C5C60* OUI:1C5FFF* ID_OUI_FROM_DATABASE=Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch +OUI:1C60DE* + ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. + OUI:1C62B8* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -55222,6 +55252,9 @@ OUI:242642* OUI:242FFA* ID_OUI_FROM_DATABASE=Toshiba Global Commerce Solutions +OUI:243184* + ID_OUI_FROM_DATABASE=SHARP Corporation + OUI:24374C* ID_OUI_FROM_DATABASE=Cisco SPVTG @@ -55426,6 +55459,9 @@ OUI:24D2CC* OUI:24D921* ID_OUI_FROM_DATABASE=Avaya, Inc +OUI:24DA9B* + ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company + OUI:24DAB6* ID_OUI_FROM_DATABASE=Sistemas de Gestión Energética S.A. de C.V @@ -55501,6 +55537,9 @@ OUI:280CB8* OUI:280DFC* ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc. +OUI:280E8B* + ID_OUI_FROM_DATABASE=Beijing Spirit Technology Development Co., Ltd. + OUI:28107B* ID_OUI_FROM_DATABASE=D-Link International @@ -55906,6 +55945,9 @@ OUI:2C1984* OUI:2C1A31* ID_OUI_FROM_DATABASE=Electronics Company Limited +OUI:2C1BC8* + ID_OUI_FROM_DATABASE=Hunan Topview Network System CO.,LTD + OUI:2C1EEA* ID_OUI_FROM_DATABASE=AERODEV @@ -56020,6 +56062,9 @@ OUI:2C5A05* OUI:2C5AA3* ID_OUI_FROM_DATABASE=PROMATE ELECTRONIC CO.LTD +OUI:2C5BB8* + ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD. + OUI:2C5BE1* ID_OUI_FROM_DATABASE=Centripetal Networks, Inc @@ -56134,6 +56179,9 @@ OUI:2CABA4* OUI:2CAD13* ID_OUI_FROM_DATABASE=SHENZHEN ZHILU TECHNOLOGY CO.,LTD +OUI:2CAE2B* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:2CB05D* ID_OUI_FROM_DATABASE=NETGEAR @@ -56368,6 +56416,9 @@ OUI:30595B* OUI:3059B7* ID_OUI_FROM_DATABASE=Microsoft +OUI:305A3A* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. + OUI:305D38* ID_OUI_FROM_DATABASE=Beissbarth @@ -56657,7 +56708,7 @@ OUI:3438AF* ID_OUI_FROM_DATABASE=Inlab Software GmbH OUI:343D98* - ID_OUI_FROM_DATABASE=Fujian JinQianMao Electronic Technology Co.,Ltd. + ID_OUI_FROM_DATABASE=JinQianMao Technology Co.,Ltd. OUI:3440B5* ID_OUI_FROM_DATABASE=IBM @@ -57052,6 +57103,12 @@ OUI:381C23* OUI:381C4A* ID_OUI_FROM_DATABASE=SIMCom Wireless Solutions Co.,Ltd. +OUI:382056* + ID_OUI_FROM_DATABASE=Cisco Systems + +OUI:382187* + ID_OUI_FROM_DATABASE=Midea Group Co., Ltd. + OUI:38229D* ID_OUI_FROM_DATABASE=Pirelli Tyre S.p.A. @@ -57178,6 +57235,9 @@ OUI:388AB7* OUI:388EE7* ID_OUI_FROM_DATABASE=Fanhattan LLC +OUI:3891D5* + ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited + OUI:3891FB* ID_OUI_FROM_DATABASE=Xenox Holding BV @@ -57310,6 +57370,9 @@ OUI:38F098* OUI:38F33F* ID_OUI_FROM_DATABASE=TATSUNO CORPORATION +OUI:38F557* + ID_OUI_FROM_DATABASE=JOLATA, INC. + OUI:38F597* ID_OUI_FROM_DATABASE=home2net GmbH @@ -57328,6 +57391,9 @@ OUI:38FACA* OUI:38FEC5* ID_OUI_FROM_DATABASE=Ellips B.V. +OUI:38FF36* + ID_OUI_FROM_DATABASE=Ruckus Wireless + OUI:3C02B1* ID_OUI_FROM_DATABASE=Creation Technologies LP @@ -57565,6 +57631,9 @@ OUI:3C8BFE* OUI:3C8C40* ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited +OUI:3C8CF8* + ID_OUI_FROM_DATABASE=TRENDnet, Inc. + OUI:3C912B* ID_OUI_FROM_DATABASE=Vexata Inc @@ -57628,12 +57697,18 @@ OUI:3CB15B* OUI:3CB17F* ID_OUI_FROM_DATABASE=Wattwatchers Pty Ld +OUI:3CB72B* + ID_OUI_FROM_DATABASE=PLUMgrid Inc + OUI:3CB792* ID_OUI_FROM_DATABASE=Hitachi Maxell, Ltd., Optronics Division OUI:3CB9A6* ID_OUI_FROM_DATABASE=Belden Deutschland GmbH +OUI:3CBBFD* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:3CBDD8* ID_OUI_FROM_DATABASE=LG ELECTRONICS INC @@ -57865,6 +57940,9 @@ OUI:40516C* OUI:40520D* ID_OUI_FROM_DATABASE=Pico Technology +OUI:4054E4* + ID_OUI_FROM_DATABASE=Wearsafe Labs Inc + OUI:405539* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -57946,6 +58024,9 @@ OUI:4083DE* OUI:408493* ID_OUI_FROM_DATABASE=Clavister AB +OUI:40862E* + ID_OUI_FROM_DATABASE=JDM MOBILE INTERNET SOLUTION CO., LTD. + OUI:4088E0* ID_OUI_FROM_DATABASE=Beijing Ereneben Information Technology Limited Shenzhen Branch @@ -58663,6 +58744,9 @@ OUI:489153* OUI:4891F6* ID_OUI_FROM_DATABASE=Shenzhen Reach software technology CO.,LTD +OUI:489A42* + ID_OUI_FROM_DATABASE=Technomate Ltd + OUI:489BE2* ID_OUI_FROM_DATABASE=SCI Innovations Ltd @@ -58708,6 +58792,9 @@ OUI:48B9C2* OUI:48BE2D* ID_OUI_FROM_DATABASE=Symanitron +OUI:48BF74* + ID_OUI_FROM_DATABASE=Baicells Technologies Co.,LTD + OUI:48C093* ID_OUI_FROM_DATABASE=Xirrus, Inc. @@ -58970,7 +59057,7 @@ OUI:4C73A5* ID_OUI_FROM_DATABASE=KOVE OUI:4C7403* - ID_OUI_FROM_DATABASE=Mundo Reader (bq) + ID_OUI_FROM_DATABASE=BQ OUI:4C7625* ID_OUI_FROM_DATABASE=Dell Inc. @@ -59452,6 +59539,9 @@ OUI:50C58D* OUI:50C7BF* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:50C8E5* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:50C971* ID_OUI_FROM_DATABASE=GN Netcom A/S @@ -59461,6 +59551,9 @@ OUI:50C9A0* OUI:50CCF8* ID_OUI_FROM_DATABASE=Samsung Electro Mechanics +OUI:50CD22* + ID_OUI_FROM_DATABASE=Avaya, Inc + OUI:50CD32* ID_OUI_FROM_DATABASE=NanJing Chaoran Science & Technology Co.,Ltd. @@ -59632,6 +59725,9 @@ OUI:544A05* OUI:544A16* ID_OUI_FROM_DATABASE=Texas Instruments +OUI:544B8C* + ID_OUI_FROM_DATABASE=juniper networks + OUI:544E90* ID_OUI_FROM_DATABASE=Apple @@ -59764,6 +59860,9 @@ OUI:54A619* OUI:54A9D4* ID_OUI_FROM_DATABASE=Minibar Systems +OUI:54AB3A* + ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC. + OUI:54AE27* ID_OUI_FROM_DATABASE=Apple @@ -59932,6 +60031,9 @@ OUI:58238C* OUI:582AF7* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd +OUI:582BDB* + ID_OUI_FROM_DATABASE=Pax AB + OUI:582EFE* ID_OUI_FROM_DATABASE=Lighting Science Group @@ -59953,6 +60055,9 @@ OUI:583F54* OUI:5842E4* ID_OUI_FROM_DATABASE=Sigma International General Medical Apparatus, LLC. +OUI:584498* + ID_OUI_FROM_DATABASE=XIAOMI INC + OUI:58468F* ID_OUI_FROM_DATABASE=Koncar Electronics and Informatics @@ -60022,6 +60127,9 @@ OUI:58671A* OUI:58677F* ID_OUI_FROM_DATABASE=Clare Controls Inc. +OUI:58685D* + ID_OUI_FROM_DATABASE=Tempo Australia Pty Ltd + OUI:58696C* ID_OUI_FROM_DATABASE=Fujian Ruijie Networks co, ltd @@ -60055,6 +60163,9 @@ OUI:587BE9* OUI:587E61* ID_OUI_FROM_DATABASE=Hisense Electric Co., Ltd +OUI:587F57* + ID_OUI_FROM_DATABASE=Apple + OUI:587F66* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd @@ -60208,6 +60319,9 @@ OUI:58F387* OUI:58F39C* ID_OUI_FROM_DATABASE=Cisco +OUI:58F496* + ID_OUI_FROM_DATABASE=Source Chain + OUI:58F67B* ID_OUI_FROM_DATABASE=Xia Men UnionCore Technology LTD. @@ -60217,6 +60331,9 @@ OUI:58F6BF* OUI:58F98E* ID_OUI_FROM_DATABASE=SECUDOS GmbH +OUI:58FC73* + ID_OUI_FROM_DATABASE=Arria Live Media, Inc. + OUI:58FCDB* ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information. @@ -60331,6 +60448,9 @@ OUI:5C43D2* OUI:5C4527* ID_OUI_FROM_DATABASE=Juniper Networks +OUI:5C4979* + ID_OUI_FROM_DATABASE=AVM Audiovisuelles Marketing und Computersysteme GmbH + OUI:5C4A26* ID_OUI_FROM_DATABASE=Enguity Technology Corp @@ -60454,6 +60574,9 @@ OUI:5CAAFD* OUI:5CAC4C* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. +OUI:5CADCF* + ID_OUI_FROM_DATABASE=Apple + OUI:5CB395* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD @@ -61049,7 +61172,7 @@ OUI:6416F0* ID_OUI_FROM_DATABASE=Shehzhen Huawei Communication Technologies Co., Ltd. OUI:641A22* - ID_OUI_FROM_DATABASE=Heliospectra/Woodhill Investments + ID_OUI_FROM_DATABASE=Heliospectra AB OUI:641C67* ID_OUI_FROM_DATABASE=DIGIBRAS INDUSTRIA DO BRASILS/A @@ -61684,6 +61807,9 @@ OUI:68A3C4* OUI:68A40E* ID_OUI_FROM_DATABASE=BSH Bosch and Siemens Home Appliances GmbH +OUI:68A828* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:68A86D* ID_OUI_FROM_DATABASE=Apple @@ -62008,6 +62134,9 @@ OUI:6C90B1* OUI:6C92BF* ID_OUI_FROM_DATABASE=Inspur Electronic Information Industry Co.,Ltd. +OUI:6C9354* + ID_OUI_FROM_DATABASE=Yaojin Technology (Shenzhen) Co., LTD. + OUI:6C94F8* ID_OUI_FROM_DATABASE=Apple @@ -62290,6 +62419,9 @@ OUI:7041B7* OUI:704642* ID_OUI_FROM_DATABASE=CHYNG HONG ELECTRONIC CO., LTD. +OUI:70480F* + ID_OUI_FROM_DATABASE=Apple + OUI:704AAE* ID_OUI_FROM_DATABASE=Xstream Flow (Pty) Ltd @@ -62614,6 +62746,9 @@ OUI:741489* OUI:7415E2* ID_OUI_FROM_DATABASE=Tri-Sen Systems Corporation +OUI:741865* + ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co.,Ltd + OUI:7419F8* ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information. @@ -62719,6 +62854,9 @@ OUI:7465D1* OUI:746630* ID_OUI_FROM_DATABASE=T:mi Ytti +OUI:7467F7* + ID_OUI_FROM_DATABASE=Zebra Technologoes + OUI:746A3A* ID_OUI_FROM_DATABASE=Aperi Corporation @@ -62731,6 +62869,9 @@ OUI:746A8F* OUI:746B82* ID_OUI_FROM_DATABASE=MOVEK +OUI:746F19* + ID_OUI_FROM_DATABASE=ICARVISIONS (SHENZHEN) TECHNOLOGY CO., LTD. + OUI:746F3D* ID_OUI_FROM_DATABASE=Contec GmbH @@ -62846,7 +62987,7 @@ OUI:74B00C* ID_OUI_FROM_DATABASE=Network Video Technologies, Inc OUI:74B9EB* - ID_OUI_FROM_DATABASE=Fujian JinQianMao Electronic Technology Co.,Ltd + ID_OUI_FROM_DATABASE=JinQianMao Technology Co.,Ltd. OUI:74BADB* ID_OUI_FROM_DATABASE=Longconn Electornics(shenzhen)Co.,Ltd @@ -63343,6 +63484,9 @@ OUI:78D5B5* OUI:78D66F* ID_OUI_FROM_DATABASE=Aristocrat Technologies Australia Pty. Ltd. +OUI:78D6B2* + ID_OUI_FROM_DATABASE=Toshiba + OUI:78D6F0* ID_OUI_FROM_DATABASE=Samsung Electro Mechanics @@ -63433,6 +63577,9 @@ OUI:78FF57* OUI:7C0187* ID_OUI_FROM_DATABASE=Curtis Instruments, Inc. +OUI:7C0191* + ID_OUI_FROM_DATABASE=Apple + OUI:7C02BC* ID_OUI_FROM_DATABASE=Hansung Electronics Co. LTD @@ -63616,6 +63763,9 @@ OUI:7C6FF8* OUI:7C70BC* ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information. +OUI:7C7176* + ID_OUI_FROM_DATABASE=Wuxi iData Technology Company Ltd. + OUI:7C72E4* ID_OUI_FROM_DATABASE=Unikey Technologies @@ -64138,6 +64288,9 @@ OUI:80B32A* OUI:80B686* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd +OUI:80B709* + ID_OUI_FROM_DATABASE=Viptela, Inc + OUI:80B95C* ID_OUI_FROM_DATABASE=ELFTECH Co., Ltd. @@ -64192,6 +64345,9 @@ OUI:80D21D* OUI:80D433* ID_OUI_FROM_DATABASE=LzLabs GmbH +OUI:80D605* + ID_OUI_FROM_DATABASE=Apple + OUI:80D733* ID_OUI_FROM_DATABASE=QSR Automations, Inc. @@ -64261,6 +64417,9 @@ OUI:840B2D* OUI:840F45* ID_OUI_FROM_DATABASE=Shanghai GMT Digital Technologies Co., Ltd +OUI:84100D* + ID_OUI_FROM_DATABASE=Motorola Mobility LLC, a Lenovo Company + OUI:84119E* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -64559,7 +64718,7 @@ OUI:84C7A9* ID_OUI_FROM_DATABASE=C3PO S.A. OUI:84C8B1* - ID_OUI_FROM_DATABASE=Incognito Software Inc. + ID_OUI_FROM_DATABASE=Incognito Software Systems Inc. OUI:84C9B2* ID_OUI_FROM_DATABASE=D-Link International @@ -64573,6 +64732,9 @@ OUI:84D32A* OUI:84D4C8* ID_OUI_FROM_DATABASE=Widex A/S +OUI:84D6D0* + ID_OUI_FROM_DATABASE=Amazon Technologies Inc. + OUI:84D9C8* ID_OUI_FROM_DATABASE=Unipattern Co., @@ -64642,6 +64804,9 @@ OUI:880355* OUI:880905* ID_OUI_FROM_DATABASE=MTMCommunications +OUI:8809AF* + ID_OUI_FROM_DATABASE=Masimo Corp. + OUI:880F10* ID_OUI_FROM_DATABASE=Huami Information Technology Co.,Ltd. @@ -65197,6 +65362,9 @@ OUI:8C9236* OUI:8C94CF* ID_OUI_FROM_DATABASE=Encell Technology, Inc. +OUI:8C99E6* + ID_OUI_FROM_DATABASE=TCT Mobile Limited + OUI:8CA048* ID_OUI_FROM_DATABASE=Beijing NeTopChip Technology Co.,LTD @@ -65287,6 +65455,9 @@ OUI:8CDF9D* OUI:8CE081* ID_OUI_FROM_DATABASE=zte corporation +OUI:8CE2DA* + ID_OUI_FROM_DATABASE=Circle Media Inc + OUI:8CE78C* ID_OUI_FROM_DATABASE=DK Networks @@ -65575,6 +65746,9 @@ OUI:908D1D* OUI:908D6C* ID_OUI_FROM_DATABASE=Apple +OUI:908D78* + ID_OUI_FROM_DATABASE=D-Link International + OUI:908FCF* ID_OUI_FROM_DATABASE=UNO System Co., Ltd @@ -65659,6 +65833,9 @@ OUI:90C682* OUI:90C792* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. +OUI:90C99B* + ID_OUI_FROM_DATABASE=Recore Systems + OUI:90CC24* ID_OUI_FROM_DATABASE=Synaptics, Inc @@ -65965,6 +66142,9 @@ OUI:94AE61* OUI:94AEE3* ID_OUI_FROM_DATABASE=Belden Hirschmann Industries (Suzhou) Ltd. +OUI:94B10A* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:94B40F* ID_OUI_FROM_DATABASE=Aruba Networks @@ -66298,6 +66478,9 @@ OUI:988389* OUI:9886B1* ID_OUI_FROM_DATABASE=Flyaudio corporation (China) +OUI:988744* + ID_OUI_FROM_DATABASE=Wuxi Hongda Science and Technology Co.,LTD + OUI:9889ED* ID_OUI_FROM_DATABASE=Anadem Information Inc. @@ -66391,6 +66574,9 @@ OUI:98E165* OUI:98E79A* ID_OUI_FROM_DATABASE=Foxconn(NanJing) Communication Co.,Ltd. +OUI:98E848* + ID_OUI_FROM_DATABASE=Axiim + OUI:98EC65* ID_OUI_FROM_DATABASE=Cosesy ApS @@ -66901,6 +67087,9 @@ OUI:A03A75* OUI:A03B1B* ID_OUI_FROM_DATABASE=Inspire Tech +OUI:A03E6B* + ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information. + OUI:A04025* ID_OUI_FROM_DATABASE=Actioncable, Inc. @@ -67219,6 +67408,9 @@ OUI:A0F849* OUI:A0F895* ID_OUI_FROM_DATABASE=Tinno Mobile Technology Corp +OUI:A0F9E0* + ID_OUI_FROM_DATABASE=VIVATEL COMPANY LIMITED + OUI:A0FC6E* ID_OUI_FROM_DATABASE=Telegrafia a.s. @@ -67420,6 +67612,9 @@ OUI:A47E39* OUI:A481EE* ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:A48431* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:A4856B* ID_OUI_FROM_DATABASE=Q Electronics Ltd @@ -67507,6 +67702,9 @@ OUI:A4B2A7* OUI:A4B36A* ID_OUI_FROM_DATABASE=JSC SDO Chromatec +OUI:A4B805* + ID_OUI_FROM_DATABASE=Apple + OUI:A4B818* ID_OUI_FROM_DATABASE=PENTA Gesellschaft für elektronische Industriedatenverarbeitung mbH @@ -67543,6 +67741,9 @@ OUI:A4C494* OUI:A4C7DE* ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd. +OUI:A4CC32* + ID_OUI_FROM_DATABASE=Inficomm Co., Ltd + OUI:A4D094* ID_OUI_FROM_DATABASE=Erwin Peters Systemtechnik GmbH @@ -68479,6 +68680,9 @@ OUI:B05706* OUI:B058C4* ID_OUI_FROM_DATABASE=Broadcast Microwave Services, Inc +OUI:B05ADA* + ID_OUI_FROM_DATABASE=Hewlett Packard + OUI:B05B1F* ID_OUI_FROM_DATABASE=THERMO FISHER SCIENTIFIC S.P.A. @@ -68941,6 +69145,9 @@ OUI:B4994C* OUI:B499BA* ID_OUI_FROM_DATABASE=Hewlett-Packard Company +OUI:B49D0B* + ID_OUI_FROM_DATABASE=BQ + OUI:B49DB4* ID_OUI_FROM_DATABASE=Axion Technologies Inc. @@ -69094,6 +69301,9 @@ OUI:B8098A* OUI:B80B9D* ID_OUI_FROM_DATABASE=ROPEX Industrie-Elektronik GmbH +OUI:B813E9* + ID_OUI_FROM_DATABASE=Trace Live Network + OUI:B81413* ID_OUI_FROM_DATABASE=Keen High Holding(HK) Ltd. @@ -69586,6 +69796,9 @@ OUI:BC305B* OUI:BC307D* ID_OUI_FROM_DATABASE=Wistron Neweb Corp. +OUI:BC307E* + ID_OUI_FROM_DATABASE=Wistron Neweb Corp + OUI:BC3400* ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information. @@ -69685,6 +69898,9 @@ OUI:BC6A2F* OUI:BC6B4D* ID_OUI_FROM_DATABASE=Alcatel-Lucent +OUI:BC6C21* + ID_OUI_FROM_DATABASE=Apple + OUI:BC6E64* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB @@ -69757,6 +69973,9 @@ OUI:BC9889* OUI:BC99BC* ID_OUI_FROM_DATABASE=FonSee Technology Inc. +OUI:BC9C31* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:BC9CC5* ID_OUI_FROM_DATABASE=Beijing Huafei Technology Co., Ltd. @@ -69826,6 +70045,9 @@ OUI:BCCD45* OUI:BCCFCC* ID_OUI_FROM_DATABASE=HTC Corporation +OUI:BCD11F* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:BCD165* ID_OUI_FROM_DATABASE=Cisco SPVTG @@ -70528,6 +70750,9 @@ OUI:C49805* OUI:C49A02* ID_OUI_FROM_DATABASE=LG Electronics (Mobile Communicaitons) +OUI:C49E41* + ID_OUI_FROM_DATABASE=G24 Power Limited + OUI:C49FF3* ID_OUI_FROM_DATABASE=Mciao Technologies, Inc. @@ -70540,6 +70765,9 @@ OUI:C4AAA1* OUI:C4AD21* ID_OUI_FROM_DATABASE=MEDIAEDGE Corporation +OUI:C4ADF1* + ID_OUI_FROM_DATABASE=GOPEACE Inc. + OUI:C4B512* ID_OUI_FROM_DATABASE=General Electric Digital Energy @@ -70549,6 +70777,9 @@ OUI:C4BA99* OUI:C4BAA3* ID_OUI_FROM_DATABASE=Beijing Winicssec Technologies Co., Ltd. +OUI:C4BBEA* + ID_OUI_FROM_DATABASE=Pakedge Device and Software Inc + OUI:C4BD6A* ID_OUI_FROM_DATABASE=SKF GmbH @@ -70618,6 +70849,9 @@ OUI:C4EEAE* OUI:C4EEF5* ID_OUI_FROM_DATABASE=Oclaro, Inc. +OUI:C4EF70* + ID_OUI_FROM_DATABASE=Home Skinovations + OUI:C4F464* ID_OUI_FROM_DATABASE=Spica international @@ -70759,6 +70993,9 @@ OUI:C86000* OUI:C864C7* ID_OUI_FROM_DATABASE=zte corporation +OUI:C869CD* + ID_OUI_FROM_DATABASE=Apple + OUI:C86C1E* ID_OUI_FROM_DATABASE=Display Systems Ltd @@ -70804,6 +71041,9 @@ OUI:C88A83* OUI:C88B47* ID_OUI_FROM_DATABASE=Nolangroup S.P.A con Socio Unico +OUI:C88ED1* + ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information. + OUI:C8903E* ID_OUI_FROM_DATABASE=Pakton Technologies @@ -71062,6 +71302,9 @@ OUI:CC1AFA* OUI:CC1EFF* ID_OUI_FROM_DATABASE=Metrological Group BV +OUI:CC20E8* + ID_OUI_FROM_DATABASE=Apple + OUI:CC2218* ID_OUI_FROM_DATABASE=InnoDigital Co., Ltd. @@ -71419,6 +71662,9 @@ OUI:D00EA4* OUI:D00ED9* ID_OUI_FROM_DATABASE=TAICANG T AND W ELECTRONICS CO LTD +OUI:D00F6D* + ID_OUI_FROM_DATABASE=T&W Electronics Company + OUI:D01242* ID_OUI_FROM_DATABASE=BIOS Corporation @@ -71482,6 +71728,9 @@ OUI:D03972* OUI:D039B3* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. +OUI:D03E5C* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:D0431E* ID_OUI_FROM_DATABASE=Dell Inc. @@ -71599,6 +71848,9 @@ OUI:D07650* OUI:D07AB5* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd +OUI:D07C2D* + ID_OUI_FROM_DATABASE=Leie IOT technology Co., Ltd + OUI:D07DE5* ID_OUI_FROM_DATABASE=Forward Pay Systems, Inc. @@ -72004,6 +72256,9 @@ OUI:D46E5C* OUI:D46F42* ID_OUI_FROM_DATABASE=WAXESS USA Inc +OUI:D47208* + ID_OUI_FROM_DATABASE=Bragi GmbH + OUI:D479C3* ID_OUI_FROM_DATABASE=Cameronet GmbH & Co. KG @@ -72427,6 +72682,9 @@ OUI:D888CE* OUI:D88A3B* ID_OUI_FROM_DATABASE=UNIT-EM +OUI:D88B4C* + ID_OUI_FROM_DATABASE=KingTing Tech. + OUI:D88D5C* ID_OUI_FROM_DATABASE=Elentec @@ -72529,6 +72787,9 @@ OUI:D8C068* OUI:D8C3FB* ID_OUI_FROM_DATABASE=DETRACOM +OUI:D8C4E9* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:D8C691* ID_OUI_FROM_DATABASE=Hichan Technology Corp. @@ -72787,12 +73048,18 @@ OUI:DC7FA4* OUI:DC825B* ID_OUI_FROM_DATABASE=JANUS, spol. s r.o. +OUI:DC82F6* + ID_OUI_FROM_DATABASE=iPort + OUI:DC85DE* ID_OUI_FROM_DATABASE=Azurewave Technologies., inc. OUI:DC86D8* ID_OUI_FROM_DATABASE=Apple, Inc +OUI:DC9A8E* + ID_OUI_FROM_DATABASE=Nanjing Cocomm electronics co., LTD + OUI:DC9B1E* ID_OUI_FROM_DATABASE=Intercom, Inc. @@ -72868,6 +73135,9 @@ OUI:DCCE41* OUI:DCCEBC* ID_OUI_FROM_DATABASE=Shenzhen JSR Technology Co.,Ltd. +OUI:DCCEC1* + ID_OUI_FROM_DATABASE=Cisco Systems + OUI:DCCF94* ID_OUI_FROM_DATABASE=Beijing Rongcheng Hutong Technology Co., Ltd. @@ -72892,6 +73162,9 @@ OUI:DCDA4F* OUI:DCDB70* ID_OUI_FROM_DATABASE=Tonfunk Systementwicklung und Service GmbH +OUI:DCDC07* + ID_OUI_FROM_DATABASE=TRP Systems BV + OUI:DCDECA* ID_OUI_FROM_DATABASE=Akyllor @@ -72916,6 +73189,9 @@ OUI:DCEB94* OUI:DCEC06* ID_OUI_FROM_DATABASE=Heimi Network Technology Co., Ltd. +OUI:DCEF09* + ID_OUI_FROM_DATABASE=Netgear + OUI:DCF05D* ID_OUI_FROM_DATABASE=Letta Teknoloji @@ -73018,6 +73294,9 @@ OUI:E031D0* OUI:E03560* ID_OUI_FROM_DATABASE=Challenger Supply Holdings, LLC +OUI:E03676* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:E036E3* ID_OUI_FROM_DATABASE=Stage One International Co., Ltd. @@ -73396,6 +73675,9 @@ OUI:E432CB* OUI:E43593* ID_OUI_FROM_DATABASE=Hangzhou GoTo technology Co.Ltd +OUI:E435C8* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:E435FB* ID_OUI_FROM_DATABASE=Sabre Technology (Hull) Ltd @@ -73441,6 +73723,9 @@ OUI:E45614* OUI:E457A8* ID_OUI_FROM_DATABASE=Stuart Manufacturing, Inc. +OUI:E458B8* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:E458E7* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -73543,12 +73828,18 @@ OUI:E498D6* OUI:E4A32F* ID_OUI_FROM_DATABASE=Shanghai Artimen Technology Co., Ltd. +OUI:E4A387* + ID_OUI_FROM_DATABASE=Control Solutions LLC + OUI:E4A5EF* ID_OUI_FROM_DATABASE=TRON LINK ELECTRONICS CO., LTD. OUI:E4A7FD* ID_OUI_FROM_DATABASE=Cellco Partnership +OUI:E4AA5D* + ID_OUI_FROM_DATABASE=Cisco Systems + OUI:E4AB46* ID_OUI_FROM_DATABASE=UAB Selteka @@ -73696,6 +73987,9 @@ OUI:E81132* OUI:E81324* ID_OUI_FROM_DATABASE=GuangZhou Bonsoninfo System CO.,LTD +OUI:E81363* + ID_OUI_FROM_DATABASE=Comstock RD, Inc. + OUI:E8150E* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -73981,6 +74275,9 @@ OUI:E8DAAA* OUI:E8DE27* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:E8DED6* + ID_OUI_FROM_DATABASE=Intrising Networks, Inc. + OUI:E8DFF2* ID_OUI_FROM_DATABASE=PRF Co., Ltd. @@ -74119,6 +74416,9 @@ OUI:EC3091* OUI:EC3586* ID_OUI_FROM_DATABASE=Apple +OUI:EC388F* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:EC3BF0* ID_OUI_FROM_DATABASE=NovelSat @@ -74188,6 +74488,9 @@ OUI:EC6264* OUI:EC63E5* ID_OUI_FROM_DATABASE=ePBoard Design LLC +OUI:EC64E7* + ID_OUI_FROM_DATABASE=MOCACARE Corporation + OUI:EC66D1* ID_OUI_FROM_DATABASE=B&W Group LTD @@ -74287,6 +74590,9 @@ OUI:ECBBAE* OUI:ECBD09* ID_OUI_FROM_DATABASE=FUSION Electronics Ltd +OUI:ECBD1D* + ID_OUI_FROM_DATABASE=Cisco Systems + OUI:ECC38A* ID_OUI_FROM_DATABASE=Accuenergy (CANADA) Inc @@ -74875,6 +75181,9 @@ OUI:F43E9D* OUI:F44227* ID_OUI_FROM_DATABASE=S & S Research Inc. +OUI:F4428F* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:F44450* ID_OUI_FROM_DATABASE=BND Co., Ltd. @@ -74890,6 +75199,9 @@ OUI:F4472A* OUI:F44848* ID_OUI_FROM_DATABASE=Amscreen Group Ltd +OUI:F44D30* + ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co.,Ltd. + OUI:F44E05* ID_OUI_FROM_DATABASE=Cisco @@ -75454,6 +75766,9 @@ OUI:F8C091* OUI:F8C288* ID_OUI_FROM_DATABASE=Cisco +OUI:F8C372* + ID_OUI_FROM_DATABASE=TSUZUKI DENKI + OUI:F8C397* ID_OUI_FROM_DATABASE=NZXT Corp. Ltd. diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb index dccced77da..35ea5e9e52 100644 --- a/hwdb/20-bluetooth-vendor-product.hwdb +++ b/hwdb/20-bluetooth-vendor-product.hwdb @@ -1772,3 +1772,78 @@ bluetooth:v024B* bluetooth:v024C* ID_VENDOR_FROM_DATABASE=Blue Clover Devices + +bluetooth:v024D* + ID_VENDOR_FROM_DATABASE=M-Way Solutions GmbH + +bluetooth:v024E* + ID_VENDOR_FROM_DATABASE=Microtronics Engineering GmbH + +bluetooth:v024F* + ID_VENDOR_FROM_DATABASE=Schneider Schreibgerte GmbH + +bluetooth:v0250* + ID_VENDOR_FROM_DATABASE=Sapphire Circuits LLC + +bluetooth:v0251* + ID_VENDOR_FROM_DATABASE=Lumo Bodytech Inc. + +bluetooth:v0252* + ID_VENDOR_FROM_DATABASE=UKC Technosolution + +bluetooth:v0253* + ID_VENDOR_FROM_DATABASE=Xicato Inc. + +bluetooth:v0254* + ID_VENDOR_FROM_DATABASE=Playbrush + +bluetooth:v0255* + ID_VENDOR_FROM_DATABASE=Dai Nippon Printing Co., Ltd. + +bluetooth:v0256* + ID_VENDOR_FROM_DATABASE=G24 Power Limited + +bluetooth:v0257* + ID_VENDOR_FROM_DATABASE=AdBabble Local Commerce Inc. + +bluetooth:v0258* + ID_VENDOR_FROM_DATABASE=Devialet SA + +bluetooth:v0259* + ID_VENDOR_FROM_DATABASE=ALTYOR + +bluetooth:v025A* + ID_VENDOR_FROM_DATABASE=University of Applied Sciences Valais/Haute Ecole Valaisanne + +bluetooth:v025B* + ID_VENDOR_FROM_DATABASE=Five Interactive, LLC dba Zendo + +bluetooth:v025C* + ID_VENDOR_FROM_DATABASE=NetEase (Hangzhou) Network co.Ltd. + +bluetooth:v025D* + ID_VENDOR_FROM_DATABASE=Lexmark International Inc. + +bluetooth:v025E* + ID_VENDOR_FROM_DATABASE=Fluke Corporation + +bluetooth:v025F* + ID_VENDOR_FROM_DATABASE=Yardarm Technologies + +bluetooth:v0260* + ID_VENDOR_FROM_DATABASE=SensaRx + +bluetooth:v0261* + ID_VENDOR_FROM_DATABASE=SECVRE GmbH + +bluetooth:v0262* + ID_VENDOR_FROM_DATABASE=Glacial Ridge Technologies + +bluetooth:v0263* + ID_VENDOR_FROM_DATABASE=Identiv, Inc. + +bluetooth:v0264* + ID_VENDOR_FROM_DATABASE=DDS, Inc. + +bluetooth:v0265* + ID_VENDOR_FROM_DATABASE=SMK Corporation diff --git a/hwdb/20-pci-classes.hwdb b/hwdb/20-pci-classes.hwdb index 5702c40114..3c0c465e5f 100644 --- a/hwdb/20-pci-classes.hwdb +++ b/hwdb/20-pci-classes.hwdb @@ -95,6 +95,9 @@ pci:v*d*sv*sd*bc02sc06* pci:v*d*sv*sd*bc02sc07* ID_PCI_SUBCLASS_FROM_DATABASE=Infiniband controller +pci:v*d*sv*sd*bc02sc08* + ID_PCI_SUBCLASS_FROM_DATABASE=Fabric controller + pci:v*d*sv*sd*bc02sc80* ID_PCI_SUBCLASS_FROM_DATABASE=Network controller @@ -554,5 +557,8 @@ pci:v*d*sv*sd*bc12sc00* pci:v*d*sv*sd*bc13* ID_PCI_CLASS_FROM_DATABASE=Non-Essential Instrumentation +pci:v*d*sv*sd*bc40* + ID_PCI_CLASS_FROM_DATABASE=Coprocessor + pci:v*d*sv*sd*bcFF* ID_PCI_CLASS_FROM_DATABASE=Unassigned class diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb index 8316bc979e..61164acfe5 100644 --- a/hwdb/20-pci-vendor-model.hwdb +++ b/hwdb/20-pci-vendor-model.hwdb @@ -1847,6 +1847,9 @@ pci:v00001002d00004151* pci:v00001002d00004151sv00001043sd0000C004* ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600 Series] (A9600SE) +pci:v00001002d00004151sv0000174Bsd00007C37* + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600 Series] (Radeon 9600 SE) + pci:v00001002d00004152* ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] @@ -1934,6 +1937,9 @@ pci:v00001002d00004171* pci:v00001002d00004171sv00001043sd0000C005* ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] (Secondary) (A9600SE (Secondary)) +pci:v00001002d00004171sv0000174Bsd00007C36* + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] (Secondary) (Radeon 9600 SE (secondary)) + pci:v00001002d00004172* ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary) @@ -3422,6 +3428,9 @@ pci:v00001002d00005159sv0000148Csd00002003* pci:v00001002d00005159sv0000148Csd00002023* ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (RV100 QY [Radeon 7000 Evil Master Multi-Display]) +pci:v00001002d00005159sv0000148Csd00002081* + ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (RV6DE) + pci:v00001002d00005159sv0000174Bsd00000280* ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon RV100 QY [Radeon 7000/VE]) @@ -17060,6 +17069,9 @@ pci:v00001077d00002020* pci:v00001077d00002031* ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter +pci:v00001077d00002031sv0000103Csd00008002* + ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter (3830C 16G Fibre Channel Host Bus Adapter) + pci:v00001077d00002100* ID_MODEL_FROM_DATABASE=QLA2100 64-bit Fibre Channel Adapter @@ -21335,6 +21347,12 @@ pci:v000010B5d00009656sv00001885sd00000700* pci:v000010B5d00009656sv00001885sd00000701* ID_MODEL_FROM_DATABASE=PCI9656 PCI <-> IOBus Bridge (Tsunami FPGA PMC with Altera Stratix S30) +pci:v000010B5d00009733* + ID_MODEL_FROM_DATABASE=PEX 9733 33-lane, 9-port PCI Express Gen 3 (8.0 GT/s) Switch + +pci:v000010B5d00009749* + ID_MODEL_FROM_DATABASE=PEX 9749 49-lane, 13-port PCI Express Gen 3 (8.0 GT/s) Switch + pci:v000010B5d0000A100* ID_MODEL_FROM_DATABASE=Blackmagic Design DeckLink @@ -22497,13 +22515,13 @@ pci:v000010CDd00001200* ID_MODEL_FROM_DATABASE=ASC1200 [(abp940) Fast SCSI-II] pci:v000010CDd00001300* - ID_MODEL_FROM_DATABASE=ABP940-U / ABP960-U + ID_MODEL_FROM_DATABASE=ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925] pci:v000010CDd00001300sv000010CDsd00001310* - ID_MODEL_FROM_DATABASE=ABP940-U / ABP960-U (ASC1300 SCSI Adapter) + ID_MODEL_FROM_DATABASE=ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925] (ASC1300/3030 SCSI adapter) pci:v000010CDd00001300sv00001195sd00001320* - ID_MODEL_FROM_DATABASE=ABP940-U / ABP960-U (Ultra-SCSI CardBus PC Card REX CB31) + ID_MODEL_FROM_DATABASE=ASC1300 / ASC3030 [ABP940-U / ABP960-U / ABP3925] (Ultra-SCSI CardBus PC Card REX CB31) pci:v000010CDd00002300* ID_MODEL_FROM_DATABASE=ABP940-UW @@ -26223,7 +26241,7 @@ pci:v000010DEd0000056Dsv00001019sd0000297A* ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73PVT-SM) pci:v000010DEd0000056Dsv000010DEsd0000CB73* - ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73 PCIe x1 port) + ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73 PCI Bridge) pci:v000010DEd0000056E* ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge @@ -26240,6 +26258,9 @@ pci:v000010DEd0000056F* pci:v000010DEd0000056Fsv00001019sd0000297A* ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73PVT-SM) +pci:v000010DEd0000056Fsv000010DEsd00000000* + ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73 PCIe x1 port) + pci:v000010DEd000005B1* ID_MODEL_FROM_DATABASE=NF200 PCIe 2.0 switch @@ -26531,6 +26552,9 @@ pci:v000010DEd00000643* pci:v000010DEd00000644* ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GS] +pci:v000010DEd00000644sv0000174Bsd00009600* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GS] (Geforce 9500GS 512M DDR2 V/D/HDMI) + pci:v000010DEd00000645* ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GS] @@ -26708,6 +26732,9 @@ pci:v000010DEd000006DFsv000010DEsd0000087F* pci:v000010DEd000006E0* ID_MODEL_FROM_DATABASE=G98 [GeForce 9300 GE] +pci:v000010DEd000006E0sv0000107Dsd00005A96* + ID_MODEL_FROM_DATABASE=G98 [GeForce 9300 GE] (Geforce 9300GE) + pci:v000010DEd000006E1* ID_MODEL_FROM_DATABASE=G98 [GeForce 9300 GS] @@ -30404,6 +30431,15 @@ pci:v000010DEd000013F2* pci:v000010DEd00001401* ID_MODEL_FROM_DATABASE=GM206 [GeForce GTX 960] +pci:v000010DEd00001617* + ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 980M] + +pci:v000010DEd00001618* + ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 970M] + +pci:v000010DEd00001619* + ID_MODEL_FROM_DATABASE=GM204M [GeForce GTX 965M] + pci:v000010DEd000017C2* ID_MODEL_FROM_DATABASE=GM200 [GeForce GTX TITAN X] @@ -34367,6 +34403,12 @@ pci:v0000111Dd00008088sv00001093sd00007602* pci:v0000111Dd0000808F* ID_MODEL_FROM_DATABASE=PES32NT8AG2 +pci:v0000111Dd000080CF* + ID_MODEL_FROM_DATABASE=F32P08xG3 [PCIe boot mode] + +pci:v0000111Dd000080D2* + ID_MODEL_FROM_DATABASE=F32P08xG3 NVMe controller + pci:v0000111E* ID_VENDOR_FROM_DATABASE=Eldec @@ -40107,7 +40149,13 @@ pci:v00001244d00000A00sv00001244sd00000A00* ID_MODEL_FROM_DATABASE=A1 ISDN [Fritz] (FRITZ!Card ISDN Controller) pci:v00001244d00000E00* - ID_MODEL_FROM_DATABASE=Fritz!PCI v2.0 ISDN + ID_MODEL_FROM_DATABASE=Fritz!Card PCI v2.0 ISDN + +pci:v00001244d00000E80* + ID_MODEL_FROM_DATABASE=Fritz!Card PCI v2.1 ISDN + +pci:v00001244d00000E80sv00001244sd00000E00* + ID_MODEL_FROM_DATABASE=Fritz!Card PCI v2.1 ISDN (PSB 3100F (AVM KAFKA) [Fritz!Card PCI v2.1]) pci:v00001244d00001100* ID_MODEL_FROM_DATABASE=C2 ISDN @@ -44895,7 +44943,7 @@ pci:v00001409d00007168sv00001409sd00004027* ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4027A (1x RS232 port)) pci:v00001409d00007168sv00001409sd00004037* - ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4037A (2x RS232 port)) + ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4037A(L) [SUNIX SUN1889] (2x RS232 port)) pci:v00001409d00007168sv00001409sd00004056* ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4056A (4x RS232)) @@ -48146,6 +48194,12 @@ pci:v000014E4d000016A2sv0000103Csd00001916* pci:v000014E4d000016A2sv0000103Csd00001917* ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet (HP FlexFabric 20Gb 2-port 630M Adapter) +pci:v000014E4d000016A2sv0000103Csd00002231* + ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet (3820C 10/20Gb Converged Network Adapter) + +pci:v000014E4d000016A2sv0000103Csd000022FA* + ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet (FlexFabric 10Gb 2-port 536FLB Adapter) + pci:v000014E4d000016A3* ID_MODEL_FROM_DATABASE=NetXtreme BCM57786 Gigabit Ethernet PCIe @@ -48158,6 +48212,12 @@ pci:v000014E4d000016A4sv0000103Csd00001916* pci:v000014E4d000016A4sv0000103Csd00001917* ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function (HP NPAR 20Gb 2-port 630M Adapter) +pci:v000014E4d000016A4sv0000103Csd00002231* + ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function (3820C 10/20Gb Converged Network Adapter (NPAR 1.5)) + +pci:v000014E4d000016A4sv0000103Csd000022FA* + ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function (FlexFabric 10Gb 2-port 536FLB Adapter (NPAR 1.5)) + pci:v000014E4d000016A5* ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function @@ -48287,6 +48347,12 @@ pci:v000014E4d000016ADsv0000103Csd00001916* pci:v000014E4d000016ADsv0000103Csd00001917* ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function (HP FlexFabric 20Gb 2-port 630M Adapter) +pci:v000014E4d000016ADsv0000103Csd00002231* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function (3820C 10/20Gb Converged Network Adapter (SR-IOV VF)) + +pci:v000014E4d000016ADsv0000103Csd000022FA* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function (FlexFabric 10Gb 2-port 536FLB Adapter (SR-IOV VF)) + pci:v000014E4d000016AE* ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function @@ -49052,6 +49118,9 @@ pci:v000014E4d000043D9* pci:v000014E4d000043DF* ID_MODEL_FROM_DATABASE=BCM4354 802.11ac Wireless LAN SoC +pci:v000014E4d000043E9* + ID_MODEL_FROM_DATABASE=BCM4358 802.11ac Wireless LAN SoC + pci:v000014E4d000043EC* ID_MODEL_FROM_DATABASE=BCM4356 802.11ac Wireless Network Adapter @@ -49232,6 +49301,9 @@ pci:v000014E4d00008602* pci:v000014E4d0000A8D8* ID_MODEL_FROM_DATABASE=BCM43224/5 Wireless Network Adapter +pci:v000014E4d0000AA52* + ID_MODEL_FROM_DATABASE=BCM43602 802.11ac Wireless LAN SoC + pci:v000014E4d0000B302* ID_MODEL_FROM_DATABASE=BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller @@ -52266,199 +52338,199 @@ pci:v0000168Cd00000012sv00001B47sd0000AA00* ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] (8460 802.11ab Wireless CardBus Adapter) pci:v0000168Cd00000013* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter pci:v0000168Cd00000013sv00000308sd00003402* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AG-100 802.11ag Wireless Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AG-100 802.11ag Wireless Cardbus Adapter) pci:v0000168Cd00000013sv00000308sd00003405* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (G-102 v2 802.11g Wireless Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (G-102 v2 802.11g Wireless Cardbus Adapter) pci:v0000168Cd00000013sv00000308sd00003408* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (G-170S 802.11g Wireless CardBus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (G-170S 802.11g Wireless CardBus Adapter) pci:v0000168Cd00000013sv00000E11sd000000E5* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (NC6000/NC8000 laptop) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (NC6000/NC8000 laptop) pci:v0000168Cd00000013sv000010B7sd00006002* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (3CRWE154A72 802.11abg Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (3CRWE154A72 802.11abg Cardbus Adapter) pci:v0000168Cd00000013sv00001113sd0000D301* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Philips CPWNA100 Wireless CardBus adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Philips CPWNA100 Wireless CardBus adapter) pci:v0000168Cd00000013sv00001113sd0000EE23* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (SMCWPCIT-G 108Mbps Wireless PCI adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (SMCWPCIT-G 108Mbps Wireless PCI adapter) pci:v0000168Cd00000013sv00001154sd0000033B* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Buffalo WLI-CB-AMG54) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Buffalo WLI-CB-AMG54) pci:v0000168Cd00000013sv00001154sd0000034E* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter) pci:v0000168Cd00000013sv00001186sd00003202* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (DWL-G650 (Rev B3,B5) Wireless cardbus adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (DWL-G650 (Rev B3,B5) Wireless cardbus adapter) pci:v0000168Cd00000013sv00001186sd00003203* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPlus DWL-G520 Wireless PCI Adapter (rev. A)) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirPlus DWL-G520 Wireless PCI Adapter (rev. A)) pci:v0000168Cd00000013sv00001186sd00003A07* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirXpert DWL-AG650 Wireless Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirXpert DWL-AG650 Wireless Cardbus Adapter) pci:v0000168Cd00000013sv00001186sd00003A08* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirXpert DWL-AG520 Wireless PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirXpert DWL-AG520 Wireless PCI Adapter) pci:v0000168Cd00000013sv00001186sd00003A12* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)) pci:v0000168Cd00000013sv00001186sd00003A13* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPlus DWL-G520 Wireless PCI Adapter (rev. B)) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirPlus DWL-G520 Wireless PCI Adapter (rev. B)) pci:v0000168Cd00000013sv00001186sd00003A14* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A)) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A)) pci:v0000168Cd00000013sv00001186sd00003A17* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPremier DWL-G680 Wireless Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (D-Link AirPremier DWL-G680 Wireless Cardbus Adapter) pci:v0000168Cd00000013sv00001186sd00003A18* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPremier DWL-G550 Wireless PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (D-Link AirPremier DWL-G550 Wireless PCI Adapter) pci:v0000168Cd00000013sv00001186sd00003A1A* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WNA-2330 802.11bg Wireless CardBus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WNA-2330 802.11bg Wireless CardBus Adapter) pci:v0000168Cd00000013sv00001186sd00003A63* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter) pci:v0000168Cd00000013sv00001186sd00003A93* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Conceptronic C54I Wireless 801.11g PCI card) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Conceptronic C54I Wireless 801.11g PCI card) pci:v0000168Cd00000013sv00001186sd00003A94* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Conceptronic C54C 802.11g Wireless Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Conceptronic C54C 802.11g Wireless Cardbus Adapter) pci:v0000168Cd00000013sv00001186sd00003AB0* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Allnet ALL0281 Wireless PCI Card) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Allnet ALL0281 Wireless PCI Card) pci:v0000168Cd00000013sv00001385sd00004600* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WAG511 802.11a/b/g Dual Band Wireless PC Card) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WAG511 802.11a/b/g Dual Band Wireless PC Card) pci:v0000168Cd00000013sv00001385sd00004610* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WAG511 802.11a/b/g Dual Band Wireless PC Card) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WAG511 802.11a/b/g Dual Band Wireless PC Card) pci:v0000168Cd00000013sv00001385sd00004900* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG311v1 802.11g Wireless PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG311v1 802.11g Wireless PCI Adapter) pci:v0000168Cd00000013sv00001385sd00004A00* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WAG311 802.11a/g Wireless PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WAG311 802.11a/g Wireless PCI Adapter) pci:v0000168Cd00000013sv00001385sd00004B00* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG511T 108 Mbps Wireless PC Card (rev.A/B)) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG511T 108 Mbps Wireless PC Card (rev.A/B)) pci:v0000168Cd00000013sv00001385sd00004D00* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG311T 108 Mbps Wireless PCI Adapter (rev.A2)) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG311T 108 Mbps Wireless PCI Adapter (rev.A2)) pci:v0000168Cd00000013sv00001385sd00004F00* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG511U Double 108 Mbps Wireless PC Card) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG511U Double 108 Mbps Wireless PC Card) pci:v0000168Cd00000013sv00001385sd00005A00* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG311T 108 Mbps Wireless PCI Adapter (rev.A3)) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG311T (rev.A3 v1h3/v1h4) 108 Mbps Wireless PCI Adapter [AR2412]) pci:v0000168Cd00000013sv00001385sd00005B00* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG511T 108 Mbps Wireless PC Card (rev.C)) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WG511T 108 Mbps Wireless PC Card (rev.C)) pci:v0000168Cd00000013sv00001385sd00005D00* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WPN511 RangeMax Wireless PC Card) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WPN511 RangeMax Wireless PC Card) pci:v0000168Cd00000013sv00001458sd0000E911* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (GN-WIAG02) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (GN-WIAG02) pci:v0000168Cd00000013sv00001468sd00000403* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (U10H014 802.11g Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (U10H014 802.11g Cardbus Adapter) pci:v0000168Cd00000013sv00001468sd00000408* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (ThinkPad 11b/g Wireless LAN Mini PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (ThinkPad 11b/g Wireless LAN Mini PCI Adapter) pci:v0000168Cd00000013sv000014B7sd00000A10* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8480-WD 802.11abg Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (8480-WD 802.11abg Cardbus Adapter) pci:v0000168Cd00000013sv000014B7sd00000A60* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter) pci:v0000168Cd00000013sv000014B7sd0000AA30* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8800-FC 802.11bg Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (8800-FC 802.11bg Cardbus Adapter) pci:v0000168Cd00000013sv000014B7sd0000AA40* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8470-WD 802.11bg Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (8470-WD 802.11bg Cardbus Adapter) pci:v0000168Cd00000013sv000014B9sd0000CB21* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (CB21 802.11a/b/g Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (CB21 802.11a/b/g Cardbus Adapter) pci:v0000168Cd00000013sv00001668sd00001026* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (IBM HighRate 11 a/b/g Wireless CardBus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (IBM HighRate 11 a/b/g Wireless CardBus Adapter) pci:v0000168Cd00000013sv0000168Csd00000013* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter) pci:v0000168Cd00000013sv0000168Csd00001025* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (DWL-G650B2 Wireless CardBus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (DWL-G650B2 Wireless CardBus Adapter) pci:v0000168Cd00000013sv0000168Csd00001027* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Engenius NL-3054CB ARIES b/g CardBus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Engenius NL-3054CB ARIES b/g CardBus Adapter) pci:v0000168Cd00000013sv0000168Csd00001042* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Ubiquiti Networks SuperRange a/b/g Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Ubiquiti Networks SuperRange a/b/g Cardbus Adapter) pci:v0000168Cd00000013sv0000168Csd00001051* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (EZ Connect g 802.11g 108Mbps Wireless PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (EZ Connect g 802.11g 108Mbps Wireless PCI Adapter) pci:v0000168Cd00000013sv0000168Csd00002026* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter) pci:v0000168Cd00000013sv0000168Csd00002027* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A)) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A)) pci:v0000168Cd00000013sv0000168Csd00002041* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter) pci:v0000168Cd00000013sv0000168Csd00002042* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter) pci:v0000168Cd00000013sv0000168Csd00002051* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (TRENDnet TEW-443PI Wireless PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (TRENDnet TEW-443PI Wireless PCI Adapter) pci:v0000168Cd00000013sv000016A5sd0000160A* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (BWP712 802.11bg Wireless CardBus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (BWP712 802.11bg Wireless CardBus Adapter) pci:v0000168Cd00000013sv000016ABsd00007302* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Trust Speedshare Turbo Pro Wireless PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Trust Speedshare Turbo Pro Wireless PCI Adapter) pci:v0000168Cd00000013sv00001737sd00000017* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WPC55AG) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WPC55AG) pci:v0000168Cd00000013sv00001737sd00000026* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WMP55AG v1.1) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WMP55AG v1.1) pci:v0000168Cd00000013sv00001737sd00000035* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WPC55AG v1.2 802.11abg Cardbus Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WPC55AG v1.2 802.11abg Cardbus Adapter) pci:v0000168Cd00000013sv00001737sd00000036* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WMP55AG v1.2 802.11abg PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (WMP55AG v1.2 802.11abg PCI Adapter) pci:v0000168Cd00000013sv00001799sd00003000* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (F6D3000 Dual-Band Wireless A+G Desktop Card) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (F6D3000 Dual-Band Wireless A+G Desktop Card) pci:v0000168Cd00000013sv00001799sd00003010* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (F6D3010 Dual-Band Wireless A+G Notebook Card) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (F6D3010 Dual-Band Wireless A+G Notebook Card) pci:v0000168Cd00000013sv000017CFsd00000042* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter) pci:v0000168Cd00000013sv0000185Fsd00001012* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (CM9 Wireless a/b/g MiniPCI Adapter) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (CM9 Wireless a/b/g MiniPCI Adapter) pci:v0000168Cd00000013sv0000185Fsd00002012* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Wistron NeWeb WLAN a+b+g model CB9) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (Wistron NeWeb WLAN a+b+g model CB9) pci:v0000168Cd00000013sv0000A727sd00006801* - ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card) + ID_MODEL_FROM_DATABASE=AR5212/5213/2414 Wireless Network Adapter (3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card) pci:v0000168Cd0000001A* ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] @@ -52733,6 +52805,9 @@ pci:v0000168Cd0000002Asv00000777sd00004F05* pci:v0000168Cd0000002Asv0000103Csd00003041* ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280]) +pci:v0000168Cd0000002Asv0000103Csd00003042* + ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (AzureWave AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280]) + pci:v0000168Cd0000002Asv0000105Bsd0000E006* ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281]) @@ -53204,6 +53279,12 @@ pci:v000016D5d00007004* pci:v000016D5d00007005* ID_MODEL_FROM_DATABASE=XMC-7K410CC: User-Configurable Kintex-7 FPGA, 410k logic cells, conduction-cooled +pci:v000016D5d00007006* + ID_MODEL_FROM_DATABASE=XMC-7A200: User-Configurable Artix-7 FPGA, 200k logic cells with Plug-In I/O + +pci:v000016D5d00007007* + ID_MODEL_FROM_DATABASE=XMC-7A200CC: User-Configurable Conduction-Cooled Artix-7 FPGA, with 200k logic cells + pci:v000016DA* ID_VENDOR_FROM_DATABASE=Advantech Co., Ltd. @@ -53471,6 +53552,12 @@ pci:v0000177Dd00000095* pci:v0000177Dd00000096* ID_MODEL_FROM_DATABASE=Octeon III CN70XX Network Processor +pci:v0000177Dd00009700* + ID_MODEL_FROM_DATABASE=Octeon III CN73XX Network Processor + +pci:v0000177Dd00009800* + ID_MODEL_FROM_DATABASE=Octeon Fusion CNF75XX Processor + pci:v0000177Dd0000A001* ID_MODEL_FROM_DATABASE=THUNDERX MRML Bridge @@ -55295,6 +55382,9 @@ pci:v00001924d00000923sv00001924sd0000800B* pci:v00001924d00000923sv00001924sd0000800E* ID_MODEL_FROM_DATABASE=SFC9140 (SFN7x42Q-R2 Flareon Ultra 7000 Series 10/40G Adapter) +pci:v00001924d00000923sv00001924sd0000800F* + ID_MODEL_FROM_DATABASE=SFC9140 (SFN7xx4F-R1 Flareon Ultra 7000 Series 10G Adapter) + pci:v00001924d00001803* ID_MODEL_FROM_DATABASE=SFC9020 Virtual Function [Solarstorm] @@ -56819,6 +56909,9 @@ pci:v00001B4Bd00009120* pci:v00001B4Bd00009123* ID_MODEL_FROM_DATABASE=88SE9123 PCIe SATA 6.0 Gb/s controller +pci:v00001B4Bd00009123sv0000DC93sd0000600E* + ID_MODEL_FROM_DATABASE=88SE9123 PCIe SATA 6.0 Gb/s controller (DC-6xxe series SATA 6G controller) + pci:v00001B4Bd00009125* ID_MODEL_FROM_DATABASE=88SE9125 PCIe SATA 6.0 Gb/s controller @@ -56915,6 +57008,9 @@ pci:v00001B73d00001000sv00001D5Csd00001000* pci:v00001B73d00001009* ID_MODEL_FROM_DATABASE=FL1009 USB 3.0 Host Controller +pci:v00001B73d00001100* + ID_MODEL_FROM_DATABASE=FL1100 USB 3.0 Host Controller + pci:v00001B74* ID_VENDOR_FROM_DATABASE=OpenVox Communication Co. Ltd. @@ -57191,6 +57287,9 @@ pci:v00001CE4d00000002* pci:v00001CF7* ID_VENDOR_FROM_DATABASE=Subspace Dynamics +pci:v00001D00* + ID_VENDOR_FROM_DATABASE=Pure Storage + pci:v00001D21* ID_VENDOR_FROM_DATABASE=Allo @@ -57356,6 +57455,36 @@ pci:v00001FC9d00003314sv00000000sd00003012* pci:v00001FC9d00003314sv00000000sd00003014* ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC (10-Giga TOE Dual Port CX4 Low Profile SmartNIC) +pci:v00001FC9d00004010* + ID_MODEL_FROM_DATABASE=TN4010 Clean SROM + +pci:v00001FC9d00004020* + ID_MODEL_FROM_DATABASE=TN9030 10GbE CX4 Ethernet Adapter + +pci:v00001FC9d00004022* + ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter + +pci:v00001FC9d00004022sv00001186sd00004D00* + ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (DXE-810S 10GbE SFP+ Ethernet Adapter) + +pci:v00001FC9d00004022sv00001FC9sd00003015* + ID_MODEL_FROM_DATABASE=TN9310 10GbE SFP+ Ethernet Adapter (Ethernet Adapter) + +pci:v00001FC9d00004024* + ID_MODEL_FROM_DATABASE=TN9210 10GBase-T Ethernet Adapter + +pci:v00001FC9d00004025* + ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter + +pci:v00001FC9d00004025sv00001186sd00002900* + ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (DXE-810T 10GBase-T Ethernet Adapter) + +pci:v00001FC9d00004025sv00001FC9sd00003015* + ID_MODEL_FROM_DATABASE=TN9510 10GBase-T/NBASE-T Ethernet Adapter (Ethernet Adapter) + +pci:v00001FC9d00004026* + ID_MODEL_FROM_DATABASE=TN9610 10GbE SFP+ Ethernet Adapter + pci:v00001FCC* ID_VENDOR_FROM_DATABASE=StreamLabs @@ -63962,6 +64091,12 @@ pci:v00008086d000015A2* pci:v00008086d000015A3* ID_MODEL_FROM_DATABASE=Ethernet Connection (3) I218-V +pci:v00008086d000015A4* + ID_MODEL_FROM_DATABASE=Ethernet Switch FM10000 Host Interface + +pci:v00008086d000015A5* + ID_MODEL_FROM_DATABASE=Ethernet Switch FM10000 Host Virtual Interface + pci:v00008086d000015A8* ID_MODEL_FROM_DATABASE=Ethernet Connection X552 Virtual Function diff --git a/hwdb/60-evdev.hwdb b/hwdb/60-evdev.hwdb index ca82f8a512..ea7e6fee54 100644 --- a/hwdb/60-evdev.hwdb +++ b/hwdb/60-evdev.hwdb @@ -117,3 +117,12 @@ evdev:name:Atmel maXTouch Touch*:dmi:bvn*:bvr*:bd*:svnGOOGLE:pnSamus* evdev:name:SynPS/2 Synaptics TouchPad:dmi:*svnLENOVO*:pn*ThinkPad*X230* EVDEV_ABS_01=::100 EVDEV_ABS_36=::100 + +######################################### +# Dell +######################################### + +# Dell Vostro 1510 +evdev:name:AlpsPS/2 ALPS GlidePoint*:dmi:bvn*:bvr*:bd*:svnDellInc.:pnVostro1510* + EVDEV_ABS_00=::14 + EVDEV_ABS_01=::18 diff --git a/hwdb/70-mouse.hwdb b/hwdb/70-mouse.hwdb index 76dcfd1b87..e2855095cd 100644 --- a/hwdb/70-mouse.hwdb +++ b/hwdb/70-mouse.hwdb @@ -36,10 +36,11 @@ # where /dev/input/eventXX is the mouse in question. If in # doubt, simply use /dev/input/event* to reload all input rules. # -# If your changes are generally applicable, open a bug report on -# http://bugs.freedesktop.org/enter_bug.cgi?product=systemd -# and include your new rules, a description of the device, and the -# output of +# If your changes are generally applicable, preferably send them as a pull +# request to +# https://github.com/systemd/ +# or create a bug report on the issue tracker located there and include your +# new rules, a description of the device, and the output of # udevadm info /dev/input/eventXX # (or /dev/input/event*). # @@ -238,6 +239,10 @@ mouse:usb:v046dpc245:name:Logitech Gaming Mouse G400: mouse:usb:v046dpc24c:name:Logitech G400s Optical Gaming Mouse: MOUSE_DPI=400@1000 *800@1000 2000@1000 4000@1000 +# Logitech G402 Hyperion Fury +mouse:usb:v046dpc07e:name:Logitech Gaming Mouse G402: + MOUSE_DPI=400@1000 *800@1000 1600@1000 3200@1000 + # Logitech B605 Wireless Mouse (also M505) mouse:usb:v046dp101d:name:Logitech B605: mouse:usb:v046dp101d:name:Logitech M505: diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml index e4ffcba168..6d05e90e7b 100644 --- a/man/systemd-fsck@.service.xml +++ b/man/systemd-fsck@.service.xml @@ -61,7 +61,7 @@ responsible for file system checks. They are instantiated for each device that is configured for file system checking. <filename>systemd-fsck-root.service</filename> is responsible for - file system checks on the root file system, but in only if the + file system checks on the root file system, but only if the root filesystem wasn't checked in the initramfs. <filename>systemd-fsck@.service</filename> is used for all other file systems and for the root file system in the initramfs.</para> diff --git a/man/systemd-machine-id-commit.xml b/man/systemd-machine-id-commit.xml index cfb1722063..d216aa0745 100644 --- a/man/systemd-machine-id-commit.xml +++ b/man/systemd-machine-id-commit.xml @@ -66,7 +66,7 @@ <para>This tool will execute no operation if <filename>/etc/machine-id</filename> doesn't contain any valid machine ID, isn't mounted as an independent temporary file system, - of <filename>/etc</filename> is read-only. If those conditions are + or <filename>/etc</filename> is read-only. If those conditions are met, it will then write current machine ID to disk and unmount the transient <filename>/etc/machine-id</filename> file in a race-free manner to ensure that this file is always valid for other diff --git a/src/basic/bitmap.c b/src/basic/bitmap.c index bf9d8d4d7c..7ea3357031 100644 --- a/src/basic/bitmap.c +++ b/src/basic/bitmap.c @@ -145,7 +145,10 @@ bool bitmap_isclear(Bitmap *b) { void bitmap_clear(Bitmap *b) { assert(b); + free(b->bitmaps); + b->bitmaps = NULL; b->n_bitmaps = 0; + b->bitmaps_allocated = 0; } bool bitmap_iterate(Bitmap *b, Iterator *i, unsigned *n) { @@ -184,6 +187,9 @@ bool bitmap_iterate(Bitmap *b, Iterator *i, unsigned *n) { } bool bitmap_equal(Bitmap *a, Bitmap *b) { + size_t common_n_bitmaps; + Bitmap *c; + unsigned i; if (!a ^ !b) return false; @@ -191,8 +197,14 @@ bool bitmap_equal(Bitmap *a, Bitmap *b) { if (!a) return true; - if (a->n_bitmaps != b->n_bitmaps) + common_n_bitmaps = MIN(a->n_bitmaps, b->n_bitmaps); + if (memcmp(a->bitmaps, b->bitmaps, sizeof(uint64_t) * common_n_bitmaps) != 0) return false; - return memcmp(a->bitmaps, b->bitmaps, sizeof(uint64_t) * a->n_bitmaps) == 0; + c = a->n_bitmaps > b->n_bitmaps ? a : b; + for (i = common_n_bitmaps; i < c->n_bitmaps; i++) + if (c->bitmaps[i] != 0) + return false; + + return true; } diff --git a/src/basic/copy.c b/src/basic/copy.c index e2d356d676..33427c6a73 100644 --- a/src/basic/copy.c +++ b/src/basic/copy.c @@ -467,8 +467,7 @@ int copy_xattr(int fdf, int fdt) { sza *= 2; - free(bufa); - bufa = NULL; + bufa = mfree(bufa); } p = bufa; @@ -491,8 +490,7 @@ int copy_xattr(int fdf, int fdt) { if (m < 0) { if (errno == ERANGE) { szb *= 2; - free(bufb); - bufb = NULL; + bufb = mfree(bufb); continue; } diff --git a/src/basic/socket-util.c b/src/basic/socket-util.c index 62f99b322e..8fd3149276 100644 --- a/src/basic/socket-util.c +++ b/src/basic/socket-util.c @@ -583,7 +583,7 @@ int sockaddr_pretty(const struct sockaddr *_sa, socklen_t salen, bool translate_ } else { p = strndup(sa->un.sun_path, sizeof(sa->un.sun_path)); - if (!ret) + if (!p) return -ENOMEM; } diff --git a/src/basic/unit-name.c b/src/basic/unit-name.c index bf52463d81..fa530da456 100644 --- a/src/basic/unit-name.c +++ b/src/basic/unit-name.c @@ -673,6 +673,7 @@ int unit_name_mangle_with_suffix(const char *name, UnitNameMangle allow_globs, c int slice_build_parent_slice(const char *slice, char **ret) { char *s, *dash; + int r; assert(slice); assert(ret); @@ -693,11 +694,11 @@ int slice_build_parent_slice(const char *slice, char **ret) { if (dash) strcpy(dash, ".slice"); else { - free(s); - - s = strdup("-.slice"); - if (!s) - return -ENOMEM; + r = free_and_strdup(&s, "-.slice"); + if (r < 0) { + free(s); + return r; + } } *ret = s; diff --git a/src/basic/util.c b/src/basic/util.c index 1c15fbc172..a968e2156d 100644 --- a/src/basic/util.c +++ b/src/basic/util.c @@ -115,17 +115,23 @@ size_t page_size(void) { return pgsz; } -bool streq_ptr(const char *a, const char *b) { - - /* Like streq(), but tries to make sense of NULL pointers */ +int strcmp_ptr(const char *a, const char *b) { + /* Like strcmp(), but tries to make sense of NULL pointers */ if (a && b) - return streq(a, b); + return strcmp(a, b); - if (!a && !b) - return true; + if (!a && b) + return -1; - return false; + if (a && !b) + return 1; + + return 0; +} + +bool streq_ptr(const char *a, const char *b) { + return strcmp_ptr(a, b) == 0; } char* endswith(const char *s, const char *postfix) { diff --git a/src/basic/util.h b/src/basic/util.h index c2e5cc610b..88c44273d4 100644 --- a/src/basic/util.h +++ b/src/basic/util.h @@ -71,6 +71,7 @@ size_t page_size(void) _pure_; #define strncaseeq(a, b, n) (strncasecmp((a), (b), (n)) == 0) bool streq_ptr(const char *a, const char *b) _pure_; +int strcmp_ptr(const char *a, const char *b) _pure_; #define new(t, n) ((t*) malloc_multiply(sizeof(t), (n))) @@ -84,6 +85,11 @@ bool streq_ptr(const char *a, const char *b) _pure_; #define malloc0(n) (calloc((n), 1)) +static inline void *mfree(void *memory) { + free(memory); + return NULL; +} + static inline const char* yes_no(bool b) { return b ? "yes" : "no"; } diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c index dde0c41744..4ac193e22a 100644 --- a/src/boot/efi/boot.c +++ b/src/boot/efi/boot.c @@ -1140,13 +1140,11 @@ static VOID config_entry_add_from_file(Config *config, EFI_HANDLE *device, CHAR1 config_add_entry(config, entry); } -static VOID config_load(Config *config, EFI_HANDLE *device, EFI_FILE *root_dir, CHAR16 *loaded_image_path) { - EFI_FILE_HANDLE entries_dir; - EFI_STATUS err; +static VOID config_load_defaults(Config *config, EFI_FILE *root_dir) { CHAR8 *content = NULL; UINTN sec; UINTN len; - UINTN i; + EFI_STATUS err; len = file_read(root_dir, L"\\loader\\loader.conf", 0, 0, &content); if (len > 0) @@ -1159,6 +1157,11 @@ static VOID config_load(Config *config, EFI_HANDLE *device, EFI_FILE *root_dir, config->timeout_sec = sec; } else config->timeout_sec_efivar = -1; +} + +static VOID config_load_entries(Config *config, EFI_HANDLE *device, EFI_FILE *root_dir, CHAR16 *loaded_image_path) { + EFI_FILE_HANDLE entries_dir; + EFI_STATUS err; err = uefi_call_wrapper(root_dir->Open, 5, root_dir, &entries_dir, L"\\loader\\entries", EFI_FILE_MODE_READ, 0ULL); if (!EFI_ERROR(err)) { @@ -1195,8 +1198,11 @@ static VOID config_load(Config *config, EFI_HANDLE *device, EFI_FILE *root_dir, } uefi_call_wrapper(entries_dir->Close, 1, entries_dir); } +} + +static VOID config_sort_entries(Config *config) { + UINTN i; - /* sort entries after version number */ for (i = 1; i < config->entry_count; i++) { BOOLEAN more; UINTN k; @@ -1738,12 +1744,19 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) { loaded_image_path = DevicePathToStr(loaded_image->FilePath); efivar_set(L"LoaderImageIdentifier", loaded_image_path, FALSE); - /* scan "\loader\entries\*.conf" files */ ZeroMem(&config, sizeof(Config)); - config_load(&config, loaded_image->DeviceHandle, root_dir, loaded_image_path); + config_load_defaults(&config, root_dir); - /* if we find some well-known loaders, add them to the end of the list */ + /* scan /EFI/Linux/ directory */ config_entry_add_linux(&config, loaded_image, root_dir); + + /* scan /loader/entries/\*.conf files */ + config_load_entries(&config, loaded_image->DeviceHandle, root_dir, loaded_image_path); + + /* sort entries after version number */ + config_sort_entries(&config); + + /* if we find some well-known loaders, add them to the end of the list */ config_entry_add_loader_auto(&config, loaded_image->DeviceHandle, root_dir, loaded_image_path, L"auto-windows", 'w', L"Windows Boot Manager", L"\\EFI\\Microsoft\\Boot\\bootmgfw.efi"); config_entry_add_loader_auto(&config, loaded_image->DeviceHandle, root_dir, loaded_image_path, diff --git a/src/bus-proxyd/bus-xml-policy.c b/src/bus-proxyd/bus-xml-policy.c index dab5acbcb4..9a3b451c56 100644 --- a/src/bus-proxyd/bus-xml-policy.c +++ b/src/bus-proxyd/bus-xml-policy.c @@ -586,10 +586,8 @@ static int file_load(Policy *p, const char *path) { case POLICY_ITEM_SEND: case POLICY_ITEM_RECV: - if (streq(name, "*")) { - free(name); - name = NULL; - } + if (streq(name, "*")) + name = mfree(name); break; diff --git a/src/bus-proxyd/driver.c b/src/bus-proxyd/driver.c index 1cb5ea5008..951f515808 100644 --- a/src/bus-proxyd/driver.c +++ b/src/bus-proxyd/driver.c @@ -71,6 +71,27 @@ static int get_creds_by_message(sd_bus *bus, sd_bus_message *m, uint64_t mask, s return get_creds_by_name(bus, name, mask, _creds, error); } +static int driver_activation(sd_bus_message *reply, void *userdata, sd_bus_error *error) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL; + ProxyActivation *activation = userdata; + + /* + * The org.freedesktop.DBus.Peer.Ping() call returned. We don't care + * whether this succeeded, failed, was not implemented or timed out. We + * cannot assume that the target reacts to this properly. Hence, just + * send the reply to the activation request and be done. + */ + + m = activation->request; /* claim reference */ + + --activation->proxy->n_activations; + LIST_REMOVE(activations_by_proxy, activation->proxy->activations, activation); + sd_bus_slot_unref(activation->slot); + free(activation); + + return synthetic_reply_method_return(m, "u", BUS_START_REPLY_SUCCESS); +} + int bus_proxy_process_driver(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m, SharedPolicy *sp, const struct ucred *ucred, Set *owned_names) { int r; @@ -441,27 +462,29 @@ int bus_proxy_process_driver(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m, name_list = (struct kdbus_info *) ((uint8_t *) a->kdbus_buffer + cmd.offset); KDBUS_FOREACH(name, name_list, cmd.list_size) { - const char *entry_name = NULL; struct kdbus_item *item; char *n; - KDBUS_ITEM_FOREACH(item, name, items) - if (item->type == KDBUS_ITEM_OWNED_NAME) - entry_name = item->name.name; - - if (!streq_ptr(entry_name, arg0)) - continue; - - if (asprintf(&n, ":1.%llu", (unsigned long long) name->id) < 0) { - err = -ENOMEM; - break; + KDBUS_ITEM_FOREACH(item, name, items) { + if (item->type == KDBUS_ITEM_OWNED_NAME) { + if (!streq_ptr(item->name.name, arg0)) + continue; + + if (asprintf(&n, ":1.%llu", (unsigned long long) name->id) < 0) { + err = -ENOMEM; + break; + } + + r = strv_consume(&owners, n); + if (r < 0) { + err = r; + break; + } + } } - r = strv_consume(&owners, n); - if (r < 0) { - err = r; + if (err < 0) break; - } } r = bus_kernel_cmd_free(a, cmd.offset); @@ -585,7 +608,9 @@ int bus_proxy_process_driver(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m, } else if (sd_bus_message_is_method_call(m, "org.freedesktop.DBus", "StartServiceByName")) { _cleanup_bus_message_unref_ sd_bus_message *msg = NULL; + ProxyActivation *activation; const char *name; + uint64_t cookie; uint32_t flags; if (!sd_bus_message_has_signature(m, "su")) @@ -604,21 +629,46 @@ int bus_proxy_process_driver(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m, if (r != -ESRCH) return synthetic_reply_method_errno(m, r, NULL); - r = sd_bus_message_new_method_call( - a, - &msg, - name, - "/", - "org.freedesktop.DBus.Peer", - "Ping"); + if (p->n_activations >= PROXY_ACTIVATIONS_MAX) + return synthetic_reply_method_errno(m, -EMFILE, NULL); + + r = sd_bus_message_get_cookie(m, &cookie); + if (r < 0) + return synthetic_reply_method_errno(m, r, NULL); + + r = sd_bus_message_new_method_call(a, + &msg, + name, + "/", + "org.freedesktop.DBus.Peer", + "Ping"); if (r < 0) return synthetic_reply_method_errno(m, r, NULL); - r = sd_bus_send(a, msg, NULL); + r = bus_message_seal(msg, cookie, BUS_DEFAULT_TIMEOUT); if (r < 0) return synthetic_reply_method_errno(m, r, NULL); - return synthetic_reply_method_return(m, "u", BUS_START_REPLY_SUCCESS); + activation = new0(ProxyActivation, 1); + if (!activation) + return synthetic_reply_method_errno(m, -ENOMEM, NULL); + + r = sd_bus_call_async(a, + &activation->slot, + msg, + driver_activation, + activation, + 0); + if (r < 0) { + free(activation); + return synthetic_reply_method_errno(m, r, NULL); + } + + activation->proxy = p; + activation->request = sd_bus_message_ref(m); + LIST_PREPEND(activations_by_proxy, p->activations, activation); + ++p->n_activations; + return 1; } else if (sd_bus_message_is_method_call(m, "org.freedesktop.DBus", "UpdateActivationEnvironment")) { _cleanup_bus_message_unref_ sd_bus_message *msg = NULL; @@ -657,8 +707,8 @@ int bus_proxy_process_driver(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m, if (r < 0) return synthetic_reply_method_errno(m, r, NULL); - if (!args) - return synthetic_reply_method_errno(m, -EINVAL, NULL); + if (strv_isempty(args)) /* nothing to do? */ + return synthetic_reply_method_return(m, NULL); r = sd_bus_message_new_method_call( a, diff --git a/src/bus-proxyd/proxy.c b/src/bus-proxyd/proxy.c index c37b09b9c0..df361ac400 100644 --- a/src/bus-proxyd/proxy.c +++ b/src/bus-proxyd/proxy.c @@ -261,9 +261,18 @@ int proxy_new(Proxy **out, int in_fd, int out_fd, const char *destination) { } Proxy *proxy_free(Proxy *p) { + ProxyActivation *activation; + if (!p) return NULL; + while ((activation = p->activations)) { + LIST_REMOVE(activations_by_proxy, p->activations, activation); + sd_bus_message_unref(activation->request); + sd_bus_slot_unref(activation->slot); + free(activation); + } + sd_bus_flush_close_unref(p->local_bus); sd_bus_flush_close_unref(p->destination_bus); set_free_free(p->owned_names); @@ -644,6 +653,10 @@ static int process_hello(Proxy *p, sd_bus_message *m) { if (r < 0) return log_error_errno(r, "Failed to append sender to NameAcquired message: %m"); + r = sd_bus_message_set_destination(n, p->destination_bus->unique_name); + if (r < 0) + return log_error_errno(r, "Failed to set destination for NameAcquired message: %m"); + r = bus_seal_synthetic_message(p->local_bus, n); if (r < 0) return log_error_errno(r, "Failed to seal NameAcquired message: %m"); diff --git a/src/bus-proxyd/proxy.h b/src/bus-proxyd/proxy.h index ccb951c109..6aac650ac9 100644 --- a/src/bus-proxyd/proxy.h +++ b/src/bus-proxyd/proxy.h @@ -25,6 +25,9 @@ #include "bus-xml-policy.h" typedef struct Proxy Proxy; +typedef struct ProxyActivation ProxyActivation; + +#define PROXY_ACTIVATIONS_MAX (16) /* max parallel activation requests */ struct Proxy { sd_bus *local_bus; @@ -37,12 +40,22 @@ struct Proxy { Set *owned_names; SharedPolicy *policy; + LIST_HEAD(ProxyActivation, activations); + size_t n_activations; + bool got_hello : 1; bool queue_overflow : 1; bool message_matched : 1; bool synthetic_matched : 1; }; +struct ProxyActivation { + LIST_FIELDS(ProxyActivation, activations_by_proxy); + Proxy *proxy; + sd_bus_message *request; + sd_bus_slot *slot; +}; + int proxy_new(Proxy **out, int in_fd, int out_fd, const char *dest); Proxy *proxy_free(Proxy *p); diff --git a/src/bus-proxyd/synthesize.c b/src/bus-proxyd/synthesize.c index 3ecedfd575..15d99103f6 100644 --- a/src/bus-proxyd/synthesize.c +++ b/src/bus-proxyd/synthesize.c @@ -214,22 +214,13 @@ int synthesize_name_acquired(Proxy *p, sd_bus *a, sd_bus *b, sd_bus_message *m) if (r < 0) return r; - r = bus_seal_synthetic_message(b, n); + r = sd_bus_message_set_destination(n, a->unique_name); if (r < 0) return r; - /* - * Make sure to only forward NameLost/NameAcquired messages if they - * match an installed MATCH rule of the local client. We really must - * not send messages the client doesn't expect. - */ - - r = bus_match_run(b, &b->match_callbacks, n); - if (r >= 0 && p->message_matched) - r = sd_bus_send(b, n, NULL); - - p->message_matched = false; - p->synthetic_matched = false; + r = bus_seal_synthetic_message(b, n); + if (r < 0) + return r; - return r; + return sd_bus_send(b, n, NULL); } diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index a48cb4029a..ba73cc410e 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -3508,9 +3508,7 @@ static int load_from_path(Unit *u, const char *path) { r = open_follow(&filename, &f, symlink_names, &id); if (r < 0) { - free(filename); - filename = NULL; - + filename = mfree(filename); if (r != -ENOENT) return r; } @@ -3534,9 +3532,7 @@ static int load_from_path(Unit *u, const char *path) { r = open_follow(&filename, &f, symlink_names, &id); if (r < 0) { - free(filename); - filename = NULL; - + filename = mfree(filename); if (r != -ENOENT) return r; diff --git a/src/core/main.c b/src/core/main.c index 6ae8b51544..a66fb18418 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1844,13 +1844,11 @@ finish: arg_default_rlimit[j] = NULL; } - free(arg_default_unit); - arg_default_unit = NULL; + arg_default_unit = mfree(arg_default_unit); free_join_controllers(); - strv_free(arg_default_environment); - arg_default_environment = NULL; + arg_default_environment = strv_free(arg_default_environment); set_free(arg_syscall_archs); arg_syscall_archs = NULL; diff --git a/src/core/snapshot.c b/src/core/snapshot.c index 1e634b9bc1..9518e21f36 100644 --- a/src/core/snapshot.c +++ b/src/core/snapshot.c @@ -217,8 +217,7 @@ int snapshot_create(Manager *m, const char *name, bool cleanup, sd_bus_error *e, break; } - free(n); - n = NULL; + n = mfree(n); } } diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index 5c6c7c0ed8..74fa90a233 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -333,8 +333,7 @@ static int get_password(const char *vol, const char *src, usec_t until, bool acc /* If the description string is simply the * volume name, then let's not show this * twice */ - free(description); - description = NULL; + description = mfree(description); } if (mount_point && description) diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c index 3805b29437..05f1ae2646 100644 --- a/src/firstboot/firstboot.c +++ b/src/firstboot/firstboot.c @@ -715,10 +715,8 @@ static int parse_argv(int argc, char *argv[]) { path_kill_slashes(arg_root); - if (path_equal(arg_root, "/")) { - free(arg_root); - arg_root = NULL; - } + if (path_equal(arg_root, "/")) + arg_root = mfree(arg_root); break; @@ -728,9 +726,8 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } - free(arg_locale); - arg_locale = strdup(optarg); - if (!arg_locale) + r = free_and_strdup(&arg_locale, optarg); + if (r < 0) return log_oom(); break; @@ -741,9 +738,8 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } - free(arg_locale_messages); - arg_locale_messages = strdup(optarg); - if (!arg_locale_messages) + r = free_and_strdup(&arg_locale_messages, optarg); + if (r < 0) return log_oom(); break; @@ -754,19 +750,16 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } - free(arg_timezone); - arg_timezone = strdup(optarg); - if (!arg_timezone) + r = free_and_strdup(&arg_timezone, optarg); + if (r < 0) return log_oom(); break; case ARG_ROOT_PASSWORD: - free(arg_root_password); - arg_root_password = strdup(optarg); - if (!arg_root_password) + r = free_and_strdup(&arg_root_password, optarg); + if (r < 0) return log_oom(); - break; case ARG_ROOT_PASSWORD_FILE: @@ -785,9 +778,8 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } - free(arg_hostname); - arg_hostname = strdup(optarg); - if (!arg_hostname) + r = free_and_strdup(&arg_hostname, optarg); + if (r < 0) return log_oom(); break; diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 9fc576fb45..50acb7595c 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -727,9 +727,8 @@ static int enumerate_partitions(dev_t devnum) { boot_nr = nr; - free(boot); - boot = strdup(subnode); - if (!boot) + r = free_and_strdup(&boot, subnode); + if (r < 0) return log_oom(); } else if (sd_id128_equal(type_id, GPT_HOME)) { @@ -741,9 +740,8 @@ static int enumerate_partitions(dev_t devnum) { home_nr = nr; home_rw = !(flags & GPT_FLAG_READ_ONLY), - free(home); - home = strdup(subnode); - if (!home) + r = free_and_strdup(&home, subnode); + if (r < 0) return log_oom(); } else if (sd_id128_equal(type_id, GPT_SRV)) { @@ -755,9 +753,8 @@ static int enumerate_partitions(dev_t devnum) { srv_nr = nr; srv_rw = !(flags & GPT_FLAG_READ_ONLY), - free(srv); - srv = strdup(subnode); - if (!srv) + r = free_and_strdup(&srv, subnode); + if (r < 0) return log_oom(); } } diff --git a/src/import/pull-dkr.c b/src/import/pull-dkr.c index 67ca1ce8e4..c918f43446 100644 --- a/src/import/pull-dkr.c +++ b/src/import/pull-dkr.c @@ -592,8 +592,7 @@ static int dkr_pull_pull_layer_v2(DkrPull *i) { i->current_ancestry++; - free(path); - path = NULL; + path = mfree(path); } log_info("Pulling layer %s...", layer); @@ -652,8 +651,7 @@ static int dkr_pull_pull_layer(DkrPull *i) { i->current_ancestry++; - free(path); - path = NULL; + path = mfree(path); } log_info("Pulling layer %s...", layer); diff --git a/src/journal/catalog.c b/src/journal/catalog.c index 33b0539315..a3e51e2f52 100644 --- a/src/journal/catalog.c +++ b/src/journal/catalog.c @@ -263,8 +263,7 @@ int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path) { if (r < 0) return r; - free(lang); - lang = NULL; + lang = mfree(lang); } if (with_language) { diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c index fc49b2e174..098f62af50 100644 --- a/src/journal/coredumpctl.c +++ b/src/journal/coredumpctl.c @@ -587,8 +587,7 @@ static int save_core(sd_journal *j, int fd, char **path, bool *unlink_temp) { if (filename && access(filename, R_OK) < 0) { log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, "File %s is not readable: %m", filename); - free(filename); - filename = NULL; + filename = mfree(filename); } if (filename && !endswith(filename, ".xz") && !endswith(filename, ".lz4")) { diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 073cc77711..355c4f1ee3 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -1259,8 +1259,7 @@ static int add_units(sd_journal *j) { } } - strv_free(patterns); - patterns = NULL; + patterns = strv_free(patterns); STRV_FOREACH(i, arg_user_units) { _cleanup_free_ char *u = NULL; diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c index c53666ddd0..773c264cf0 100644 --- a/src/libsystemd/sd-bus/bus-control.c +++ b/src/libsystemd/sd-bus/bus-control.c @@ -256,9 +256,7 @@ static int kernel_get_list(sd_bus *bus, uint64_t flags, char ***x) { name_list = (struct kdbus_info *) ((uint8_t *) bus->kdbus_buffer + cmd.offset); KDBUS_FOREACH(name, name_list, cmd.list_size) { - struct kdbus_item *item; - const char *entry_name = NULL; if ((flags & KDBUS_LIST_UNIQUE) && name->id != previous_id) { char *n; @@ -275,15 +273,15 @@ static int kernel_get_list(sd_bus *bus, uint64_t flags, char ***x) { previous_id = name->id; } - KDBUS_ITEM_FOREACH(item, name, items) - if (item->type == KDBUS_ITEM_OWNED_NAME) - entry_name = item->name.name; - - if (entry_name && service_name_is_valid(entry_name)) { - r = strv_extend(x, entry_name); - if (r < 0) { - r = -ENOMEM; - goto fail; + KDBUS_ITEM_FOREACH(item, name, items) { + if (item->type == KDBUS_ITEM_OWNED_NAME) { + if (service_name_is_valid(item->name.name)) { + r = strv_extend(x, item->name.name); + if (r < 0) { + r = -ENOMEM; + goto fail; + } + } } } } diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c index e4cbd793ed..18c36ce243 100644 --- a/src/libsystemd/sd-bus/bus-match.c +++ b/src/libsystemd/sd-bus/bus-match.c @@ -861,8 +861,7 @@ int bus_match_parse( if (r < 0) goto fail; - free(value); - value = NULL; + value = mfree(value); } else u = 0; diff --git a/src/libsystemd/sd-bus/busctl-introspect.c b/src/libsystemd/sd-bus/busctl-introspect.c index 15c10da7e9..03e83d08a1 100644 --- a/src/libsystemd/sd-bus/busctl-introspect.c +++ b/src/libsystemd/sd-bus/busctl-introspect.c @@ -462,9 +462,8 @@ static int parse_xml_node(Context *context, const char *prefix, unsigned n_depth } } - free(argument_type); - free(argument_direction); - argument_type = argument_direction = NULL; + argument_type = mfree(argument_type); + argument_direction = mfree(argument_direction); } state = STATE_METHOD; @@ -604,8 +603,7 @@ static int parse_xml_node(Context *context, const char *prefix, unsigned n_depth if (!strextend(&context->member_signature, argument_type, NULL)) return log_oom(); - free(argument_type); - argument_type = NULL; + argument_type = mfree(argument_type); } state = STATE_SIGNAL; diff --git a/src/libsystemd/sd-bus/busctl.c b/src/libsystemd/sd-bus/busctl.c index 6aaaf0e5ec..a1f0f30d6c 100644 --- a/src/libsystemd/sd-bus/busctl.c +++ b/src/libsystemd/sd-bus/busctl.c @@ -656,28 +656,15 @@ static int member_compare_func(const void *a, const void *b) { assert(x->type); assert(y->type); - if (!x->interface && y->interface) - return -1; - if (x->interface && !y->interface) - return 1; - if (x->interface && y->interface) { - d = strcmp(x->interface, y->interface); - if (d != 0) - return d; - } + d = strcmp_ptr(x->interface, y->interface); + if (d != 0) + return d; d = strcmp(x->type, y->type); if (d != 0) return d; - if (!x->name && y->name) - return -1; - if (x->name && !y->name) - return 1; - if (x->name && y->name) - return strcmp(x->name, y->name); - - return 0; + return strcmp_ptr(x->name, y->name); } static int member_compare_funcp(const void *a, const void *b) { @@ -1697,6 +1684,7 @@ static int help(void) { " --acquired Only show acquired names\n" " --activatable Only show activatable names\n" " --match=MATCH Only show matching messages\n" + " --size=SIZE Maximum length of captured packet\n" " --list Don't show tree, but simple object path list\n" " --quiet Don't show method call reply\n" " --verbose Show result values in long format\n" @@ -1837,7 +1825,7 @@ static int parse_argv(int argc, char *argv[]) { case ARG_SIZE: { off_t o; - r = parse_size(optarg, 0, &o); + r = parse_size(optarg, 1024, &o); if (r < 0) { log_error("Failed to parse size: %s", optarg); return r; @@ -2018,15 +2006,15 @@ int main(int argc, char *argv[]) { } } + r = sd_bus_set_bus_client(bus, true); + if (r < 0) { + log_error_errno(r, "Failed to set bus client: %m"); + goto finish; + } + if (arg_address) r = sd_bus_set_address(bus, arg_address); else { - r = sd_bus_set_bus_client(bus, true); - if (r < 0) { - log_error_errno(r, "Failed to set bus client: %m"); - goto finish; - } - switch (arg_transport) { case BUS_TRANSPORT_LOCAL: diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c index 0ca225c617..0f075907d5 100644 --- a/src/libsystemd/sd-bus/sd-bus.c +++ b/src/libsystemd/sd-bus/sd-bus.c @@ -73,13 +73,9 @@ static void bus_close_fds(sd_bus *b) { detach_io_events(b); - if (b->input_fd >= 0) - safe_close(b->input_fd); - - if (b->output_fd >= 0 && b->output_fd != b->input_fd) + if (b->input_fd != b->output_fd) safe_close(b->output_fd); - - b->input_fd = b->output_fd = -1; + b->output_fd = b->input_fd = safe_close(b->input_fd); } static void bus_reset_queues(sd_bus *b) { @@ -88,15 +84,13 @@ static void bus_reset_queues(sd_bus *b) { while (b->rqueue_size > 0) sd_bus_message_unref(b->rqueue[--b->rqueue_size]); - free(b->rqueue); - b->rqueue = NULL; + b->rqueue = mfree(b->rqueue); b->rqueue_allocated = 0; while (b->wqueue_size > 0) sd_bus_message_unref(b->wqueue[--b->wqueue_size]); - free(b->wqueue); - b->wqueue = NULL; + b->wqueue = mfree(b->wqueue); b->wqueue_allocated = 0; } @@ -896,10 +890,9 @@ static int parse_container_kernel_address(sd_bus *b, const char **p, char **guid } else b->nspid = 0; - free(b->kernel); - b->kernel = strdup("/sys/fs/kdbus/0-system/bus"); - if (!b->kernel) - return -ENOMEM; + r = free_and_strdup(&b->kernel, "/sys/fs/kdbus/0-system/bus"); + if (r < 0) + return r; return 0; } @@ -909,15 +902,11 @@ static void bus_reset_parsed_address(sd_bus *b) { zero(b->sockaddr); b->sockaddr_size = 0; - strv_free(b->exec_argv); - free(b->exec_path); - b->exec_path = NULL; - b->exec_argv = NULL; + b->exec_argv = strv_free(b->exec_argv); + b->exec_path = mfree(b->exec_path); b->server_id = SD_ID128_NULL; - free(b->kernel); - b->kernel = NULL; - free(b->machine); - b->machine = NULL; + b->kernel = mfree(b->kernel); + b->machine = mfree(b->machine); b->nspid = 0; } diff --git a/src/libsystemd/sd-bus/test-bus-proxy.c b/src/libsystemd/sd-bus/test-bus-proxy.c index 369c2f331c..aef768dc18 100644 --- a/src/libsystemd/sd-bus/test-bus-proxy.c +++ b/src/libsystemd/sd-bus/test-bus-proxy.c @@ -53,7 +53,9 @@ static int test_proxy_acquired(sd_bus_message *m, void *userdata, sd_bus_error * static void test_proxy_matched(void) { _cleanup_bus_flush_close_unref_ sd_bus *a = NULL; + _cleanup_free_ char *matchstr = NULL; TestProxyMatch match = {}; + const char *me; int r; /* open bus 'a' */ @@ -70,10 +72,17 @@ static void test_proxy_matched(void) { r = sd_bus_start(a); assert_se(r >= 0); - r = sd_bus_add_match(a, NULL, - "type='signal'," - "member='NameAcquired'", - test_proxy_acquired, &match); + r = sd_bus_get_unique_name(a, &me); + assert_se(r >= 0); + + matchstr = strjoin("type='signal'," + "member='NameAcquired'," + "destination='", + me, + "'", + NULL); + assert_se(matchstr); + r = sd_bus_add_match(a, NULL, matchstr, test_proxy_acquired, &match); assert_se(r >= 0); r = sd_bus_get_unique_name(a, &match.sender); diff --git a/src/libsystemd/sd-netlink/test-local-addresses.c b/src/libsystemd/sd-netlink/test-local-addresses.c index 38cbcfbccb..9867eec065 100644 --- a/src/libsystemd/sd-netlink/test-local-addresses.c +++ b/src/libsystemd/sd-netlink/test-local-addresses.c @@ -44,9 +44,8 @@ int main(int argc, char *argv[]) { printf("Local Addresses:\n"); print_local_addresses(a, (unsigned) n); - free(a); + a = mfree(a); - a = NULL; n = local_gateways(NULL, 0, AF_UNSPEC, &a); assert_se(n >= 0); diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 9709eca9bd..5fa98e069f 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -372,11 +372,9 @@ static int prop_map_first_of_struct(sd_bus *bus, const char *member, sd_bus_mess if (r < 0) return r; - free(*p); - *p = strdup(s); - - if (!*p) - return -ENOMEM; + r = free_and_strdup(p, s); + if (r < 0) + return r; } else { r = sd_bus_message_read_basic(m, contents[0], userdata); if (r < 0) diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 397952e7e5..b0cd85e985 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -725,15 +725,13 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus log_warning("Existing logind session ID %s used by new audit session, ignoring", id); audit_id = 0; - free(id); - id = NULL; + id = mfree(id); } } if (!id) { do { - free(id); - id = NULL; + id = mfree(id); if (asprintf(&id, "c%lu", ++m->session_counter) < 0) return -ENOMEM; @@ -2355,8 +2353,7 @@ static int method_inhibit(sd_bus_message *message, void *userdata, sd_bus_error return r; do { - free(id); - id = NULL; + id = mfree(id); if (asprintf(&id, "%lu", ++m->inhibit_counter) < 0) return -ENOMEM; diff --git a/src/login/logind-session.c b/src/login/logind-session.c index 2537d02845..9a2da7906e 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -636,6 +636,9 @@ int session_stop(Session *s, bool force) { s->timer_event_source = sd_event_source_unref(s->timer_event_source); + if (s->seat) + seat_evict_position(s->seat, s); + /* We are going down, don't care about FIFOs anymore */ session_remove_fifo(s); @@ -672,6 +675,9 @@ int session_finalize(Session *s) { s->timer_event_source = sd_event_source_unref(s->timer_event_source); + if (s->seat) + seat_evict_position(s->seat, s); + /* Kill session devices */ while ((sd = hashmap_first(s->devices))) session_device_free(sd); diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 9d570e0146..78e96c4e5b 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -2059,10 +2059,9 @@ int link_update(Link *link, sd_netlink_message *m) { link_free_carrier_maps(link); - free(link->ifname); - link->ifname = strdup(ifname); - if (!link->ifname) - return -ENOMEM; + r = free_and_strdup(&link->ifname, ifname); + if (r < 0) + return r; r = link_new_carrier_maps(link); if (r < 0) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 65b9a5071b..e78b15a8b3 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -309,8 +309,7 @@ static void custom_mount_free_all(void) { strv_free(m->lower); } - free(arg_custom_mounts); - arg_custom_mounts = NULL; + arg_custom_mounts = mfree(arg_custom_mounts); arg_n_custom_mounts = 0; } @@ -503,9 +502,8 @@ static int parse_argv(int argc, char *argv[]) { break; case 'u': - free(arg_user); - arg_user = strdup(optarg); - if (!arg_user) + r = free_and_strdup(&arg_user, optarg); + if (r < 0) return log_oom(); break; @@ -562,8 +560,7 @@ static int parse_argv(int argc, char *argv[]) { case 'M': if (isempty(optarg)) { - free(arg_machine); - arg_machine = NULL; + arg_machine = mfree(arg_machine); } else { if (!machine_name_is_valid(optarg)) { log_error("Invalid machine name: %s", optarg); diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c index 31db1aaf68..ab96cb231e 100644 --- a/src/nss-myhostname/nss-myhostname.c +++ b/src/nss-myhostname/nss-myhostname.c @@ -464,8 +464,7 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r( } } - free(addresses); - addresses = NULL; + addresses = mfree(addresses); n_addresses = local_gateways(NULL, 0, AF_UNSPEC, &addresses); if (n_addresses > 0) { diff --git a/src/run/run.c b/src/run/run.c index 148854a9b5..3dd97022de 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -1129,13 +1129,9 @@ int main(int argc, char* argv[]) { } if (arg_unit && isempty(description)) { - free(description); - description = strdup(arg_unit); - - if (!description) { - r = log_oom(); + r = free_and_strdup(&description, arg_unit); + if (r < 0) goto finish; - } } arg_description = description; diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 7370c786f9..d99aa1d6e9 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -333,8 +333,7 @@ int config_parse(const char *unit, return -ENOMEM; } - free(continuation); - continuation = NULL; + continuation = mfree(continuation); p = c; } else p = l; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 6db4d6587a..4e850ea1cf 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3327,8 +3327,7 @@ static void print_status_info( if (! dir || last) { printf(dir ? " " : " Drop-In: "); - free(dir); - dir = NULL; + dir = mfree(dir); if (path_get_parent(*dropin, &dir) < 0) { log_oom(); diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c index d7ba482834..3a92d120d2 100644 --- a/src/sysusers/sysusers.c +++ b/src/sysusers/sysusers.c @@ -704,8 +704,7 @@ static int write_files(void) { goto finish; } - free(group_tmp); - group_tmp = NULL; + group_tmp = mfree(group_tmp); } if (gshadow) { if (rename(gshadow_tmp, gshadow_path) < 0) { @@ -713,8 +712,7 @@ static int write_files(void) { goto finish; } - free(gshadow_tmp); - gshadow_tmp = NULL; + gshadow_tmp = mfree(gshadow_tmp); } } @@ -724,8 +722,7 @@ static int write_files(void) { goto finish; } - free(passwd_tmp); - passwd_tmp = NULL; + passwd_tmp = mfree(passwd_tmp); } if (shadow) { if (rename(shadow_tmp, shadow_path) < 0) { @@ -733,8 +730,7 @@ static int write_files(void) { goto finish; } - free(shadow_tmp); - shadow_tmp = NULL; + shadow_tmp = mfree(shadow_tmp); } r = 0; @@ -891,8 +887,10 @@ static int add_user(Item *i) { i->uid = p->pw_uid; i->uid_set = true; - free(i->description); - i->description = strdup(p->pw_gecos); + r = free_and_strdup(&i->description, p->pw_gecos); + if (r < 0) + return log_oom(); + return 0; } if (!IN_SET(errno, 0, ENOENT)) @@ -1149,9 +1147,8 @@ static int process_item(Item *i) { } if (i->gid_path) { - free(j->gid_path); - j->gid_path = strdup(i->gid_path); - if (!j->gid_path) + r = free_and_strdup(&j->gid_path, i->gid_path); + if (r < 0) return log_oom(); } @@ -1409,10 +1406,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { } /* Verify name */ - if (isempty(name) || streq(name, "-")) { - free(name); - name = NULL; - } + if (isempty(name) || streq(name, "-")) + name = mfree(name); if (name) { r = specifier_printf(name, specifier_table, NULL, &resolved_name); @@ -1428,10 +1423,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { } /* Verify id */ - if (isempty(id) || streq(id, "-")) { - free(id); - id = NULL; - } + if (isempty(id) || streq(id, "-")) + id = mfree(id); if (id) { r = specifier_printf(id, specifier_table, NULL, &resolved_id); @@ -1442,10 +1435,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { } /* Verify description */ - if (isempty(description) || streq(description, "-")) { - free(description); - description = NULL; - } + if (isempty(description) || streq(description, "-")) + description = mfree(description); if (description) { if (!valid_gecos(description)) { @@ -1455,10 +1446,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { } /* Verify home */ - if (isempty(home) || streq(home, "-")) { - free(home); - home = NULL; - } + if (isempty(home) || streq(home, "-")) + home = mfree(home); if (home) { if (!valid_home(home)) { diff --git a/src/test/test-af-list.c b/src/test/test-af-list.c new file mode 100644 index 0000000000..d69104f540 --- /dev/null +++ b/src/test/test-af-list.c @@ -0,0 +1,48 @@ +/*** + This file is part of systemd + + Copyright 2015 Daniel Mack + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <sys/socket.h> +#include <string.h> + +#include "macro.h" +#include "util.h" + +static const struct af_name* lookup_af(register const char *str, register unsigned int len); + +#include "af-list.h" +#include "af-to-name.h" +#include "af-from-name.h" + +int main(int argc, const char *argv[]) { + + unsigned int i; + + for (i = 0; i < ELEMENTSOF(af_names); i++) { + if (af_names[i]) { + assert_se(streq(af_to_name(i), af_names[i])); + assert_se(af_from_name(af_names[i]) == (int) i); + } + } + + assert_se(af_to_name(af_max()) == NULL); + assert_se(af_to_name(-1) == NULL); + assert_se(af_from_name("huddlduddl") == AF_UNSPEC); + + return 0; +}
\ No newline at end of file diff --git a/src/test/test-arphrd-list.c b/src/test/test-arphrd-list.c new file mode 100644 index 0000000000..d7c8eaa4a9 --- /dev/null +++ b/src/test/test-arphrd-list.c @@ -0,0 +1,48 @@ +/*** + This file is part of systemd + + Copyright 2015 Daniel Mack + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <net/if_arp.h> +#include <string.h> + +#include "macro.h" +#include "util.h" + +static const struct arphrd_name* lookup_arphrd(register const char *str, register unsigned int len); + +#include "arphrd-list.h" +#include "arphrd-to-name.h" +#include "arphrd-from-name.h" + +int main(int argc, const char *argv[]) { + + unsigned int i; + + for (i = 1; i < ELEMENTSOF(arphrd_names); i++) { + if (arphrd_names[i]) { + assert_se(streq(arphrd_to_name(i), arphrd_names[i])); + assert_se(arphrd_from_name(arphrd_names[i]) == (int) i); + } + } + + assert_se(arphrd_to_name(arphrd_max()) == NULL); + assert_se(arphrd_to_name(0) == NULL); + assert_se(arphrd_from_name("huddlduddl") == 0); + + return 0; +}
\ No newline at end of file diff --git a/src/test/test-bitmap.c b/src/test/test-bitmap.c index 96deeded7e..ff22117745 100644 --- a/src/test/test-bitmap.c +++ b/src/test/test-bitmap.c @@ -20,7 +20,7 @@ #include "bitmap.h" int main(int argc, const char *argv[]) { - _cleanup_bitmap_free_ Bitmap *b = NULL; + _cleanup_bitmap_free_ Bitmap *b = NULL, *b2 = NULL; Iterator it; unsigned n = (unsigned) -1, i = 0; @@ -101,5 +101,23 @@ int main(int argc, const char *argv[]) { assert_se(bitmap_set(b, (unsigned) -1) == -ERANGE); + bitmap_free(b); + b = NULL; + assert_se(bitmap_ensure_allocated(&b) == 0); + assert_se(bitmap_ensure_allocated(&b2) == 0); + + assert_se(bitmap_equal(b, b2)); + assert_se(bitmap_set(b, 0) == 0); + bitmap_unset(b, 0); + assert_se(bitmap_equal(b, b2)); + + assert_se(bitmap_set(b, 1) == 0); + bitmap_clear(b); + assert_se(bitmap_equal(b, b2)); + + assert_se(bitmap_set(b, 0) == 0); + assert_se(bitmap_set(b2, 0) == 0); + assert_se(bitmap_equal(b, b2)); + return 0; } diff --git a/src/test/test-socket-util.c b/src/test/test-socket-util.c index f257af445a..2c18090ae5 100644 --- a/src/test/test-socket-util.c +++ b/src/test/test-socket-util.c @@ -158,6 +158,20 @@ static void test_socket_address_is_netlink(void) { assert_se(!socket_address_is_netlink(&a, "route 1")); } +static void test_in_addr_is_null(void) { + + union in_addr_union i = {}; + + assert_se(in_addr_is_null(AF_INET, &i) == true); + assert_se(in_addr_is_null(AF_INET6, &i) == true); + + i.in.s_addr = 0x1000000; + assert_se(in_addr_is_null(AF_INET, &i) == false); + assert_se(in_addr_is_null(AF_INET6, &i) == false); + + assert_se(in_addr_is_null(-1, &i) == -EAFNOSUPPORT); +} + static void test_in_addr_prefix_intersect_one(unsigned f, const char *a, unsigned apl, const char *b, unsigned bpl, int result) { union in_addr_union ua, ub; @@ -340,6 +354,7 @@ int main(int argc, char *argv[]) { test_socket_address_is(); test_socket_address_is_netlink(); + test_in_addr_is_null(); test_in_addr_prefix_intersect(); test_in_addr_prefix_next(); test_in_addr_to_string(); diff --git a/src/test/test-util.c b/src/test/test-util.c index f43433baa1..3e87e9e710 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -280,6 +280,39 @@ static void test_parse_uid(void) { r = parse_uid("100", &uid); assert_se(r == 0); assert_se(uid == 100); + + r = parse_uid("65535", &uid); + assert_se(r == -ENXIO); +} + +static void test_safe_atou16(void) { + int r; + uint16_t l; + + r = safe_atou16("12345", &l); + assert_se(r == 0); + assert_se(l == 12345); + + r = safe_atou16("123456", &l); + assert_se(r == -ERANGE); + + r = safe_atou16("junk", &l); + assert_se(r == -EINVAL); +} + +static void test_safe_atoi16(void) { + int r; + int16_t l; + + r = safe_atoi16("-12345", &l); + assert_se(r == 0); + assert_se(l == -12345); + + r = safe_atoi16("36536", &l); + assert_se(r == -ERANGE); + + r = safe_atoi16("junk", &l); + assert_se(r == -EINVAL); } static void test_safe_atolli(void) { @@ -583,6 +616,15 @@ static void test_unbase32hexmem(void) { assert_se(unbase32hexmem("AAAAB===", strlen("AAAAB==="), true, &mem, &len) == -EINVAL); assert_se(unbase32hexmem("AAAAAAB=", strlen("AAAAAAB="), true, &mem, &len) == -EINVAL); + assert_se(unbase32hexmem("XPNMUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL); + assert_se(unbase32hexmem("CXNMUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL); + assert_se(unbase32hexmem("CPXMUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL); + assert_se(unbase32hexmem("CPNXUOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL); + assert_se(unbase32hexmem("CPNMXOJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL); + assert_se(unbase32hexmem("CPNMUXJ1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL); + assert_se(unbase32hexmem("CPNMUOX1", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL); + assert_se(unbase32hexmem("CPNMUOJX", strlen("CPNMUOJ1"), true, &mem, &len) == -EINVAL); + assert_se(unbase32hexmem("", strlen(""), false, &mem, &len) == 0); assert_se(streq(strndupa(mem, len), "")); free(mem); @@ -714,45 +756,38 @@ static void test_cunescape(void) { assert_se(cunescape("abc\\\\\\\"\\b\\f\\a\\n\\r\\t\\v\\003\\177\\234\\313\\000\\x00", 0, &unescaped) < 0); assert_se(cunescape("abc\\\\\\\"\\b\\f\\a\\n\\r\\t\\v\\003\\177\\234\\313\\000\\x00", UNESCAPE_RELAX, &unescaped) >= 0); assert_se(streq_ptr(unescaped, "abc\\\"\b\f\a\n\r\t\v\003\177\234\313\\000\\x00")); - free(unescaped); - unescaped = NULL; + unescaped = mfree(unescaped); /* incomplete sequences */ assert_se(cunescape("\\x0", 0, &unescaped) < 0); assert_se(cunescape("\\x0", UNESCAPE_RELAX, &unescaped) >= 0); assert_se(streq_ptr(unescaped, "\\x0")); - free(unescaped); - unescaped = NULL; + unescaped = mfree(unescaped); assert_se(cunescape("\\x", 0, &unescaped) < 0); assert_se(cunescape("\\x", UNESCAPE_RELAX, &unescaped) >= 0); assert_se(streq_ptr(unescaped, "\\x")); - free(unescaped); - unescaped = NULL; + unescaped = mfree(unescaped); assert_se(cunescape("\\", 0, &unescaped) < 0); assert_se(cunescape("\\", UNESCAPE_RELAX, &unescaped) >= 0); assert_se(streq_ptr(unescaped, "\\")); - free(unescaped); - unescaped = NULL; + unescaped = mfree(unescaped); assert_se(cunescape("\\11", 0, &unescaped) < 0); assert_se(cunescape("\\11", UNESCAPE_RELAX, &unescaped) >= 0); assert_se(streq_ptr(unescaped, "\\11")); - free(unescaped); - unescaped = NULL; + unescaped = mfree(unescaped); assert_se(cunescape("\\1", 0, &unescaped) < 0); assert_se(cunescape("\\1", UNESCAPE_RELAX, &unescaped) >= 0); assert_se(streq_ptr(unescaped, "\\1")); - free(unescaped); - unescaped = NULL; + unescaped = mfree(unescaped); assert_se(cunescape("\\u0000", 0, &unescaped) < 0); assert_se(cunescape("\\u00DF\\U000000df\\u03a0\\U00000041", UNESCAPE_RELAX, &unescaped) >= 0); assert_se(streq_ptr(unescaped, "ßßΠA")); - free(unescaped); - unescaped = NULL; + unescaped = mfree(unescaped); assert_se(cunescape("\\073", 0, &unescaped) >= 0); assert_se(streq_ptr(unescaped, ";")); @@ -859,32 +894,28 @@ static void test_read_hostname_config(void) { write_string_file(path, "foo", WRITE_STRING_FILE_CREATE); assert_se(read_hostname_config(path, &hostname) == 0); assert_se(streq(hostname, "foo")); - free(hostname); - hostname = NULL; + hostname = mfree(hostname); /* with comment */ write_string_file(path, "# comment\nfoo", WRITE_STRING_FILE_CREATE); assert_se(read_hostname_config(path, &hostname) == 0); assert_se(hostname); assert_se(streq(hostname, "foo")); - free(hostname); - hostname = NULL; + hostname = mfree(hostname); /* with comment and extra whitespace */ write_string_file(path, "# comment\n\n foo ", WRITE_STRING_FILE_CREATE); assert_se(read_hostname_config(path, &hostname) == 0); assert_se(hostname); assert_se(streq(hostname, "foo")); - free(hostname); - hostname = NULL; + hostname = mfree(hostname); /* cleans up name */ write_string_file(path, "!foo/bar.com", WRITE_STRING_FILE_CREATE); assert_se(read_hostname_config(path, &hostname) == 0); assert_se(hostname); assert_se(streq(hostname, "foobar.com")); - free(hostname); - hostname = NULL; + hostname = mfree(hostname); /* no value set */ hostname = (char*) 0x1234; @@ -1260,6 +1291,16 @@ static void test_endswith(void) { assert_se(!endswith("foobar", "foobarfoofoo")); } +static void test_endswith_no_case(void) { + assert_se(endswith_no_case("fooBAR", "bar")); + assert_se(endswith_no_case("foobar", "")); + assert_se(endswith_no_case("foobar", "FOOBAR")); + assert_se(endswith_no_case("", "")); + + assert_se(!endswith_no_case("foobar", "FOO")); + assert_se(!endswith_no_case("foobar", "FOOBARFOOFOO")); +} + static void test_close_nointr(void) { char name[] = "/tmp/test-test-close_nointr.XXXXXX"; int fd; @@ -2083,6 +2124,18 @@ static void test_tempfn(void) { free(ret); } +static void test_strcmp_ptr(void) { + assert_se(strcmp_ptr(NULL, NULL) == 0); + assert_se(strcmp_ptr("", NULL) > 0); + assert_se(strcmp_ptr("foo", NULL) > 0); + assert_se(strcmp_ptr(NULL, "") < 0); + assert_se(strcmp_ptr(NULL, "bar") < 0); + assert_se(strcmp_ptr("foo", "bar") > 0); + assert_se(strcmp_ptr("bar", "baz") < 0); + assert_se(strcmp_ptr("foo", "foo") == 0); + assert_se(strcmp_ptr("", "") == 0); +} + int main(int argc, char *argv[]) { log_parse_environment(); log_open(); @@ -2098,6 +2151,8 @@ int main(int argc, char *argv[]) { test_parse_boolean(); test_parse_pid(); test_parse_uid(); + test_safe_atou16(); + test_safe_atoi16(); test_safe_atolli(); test_safe_atod(); test_strappend(); @@ -2147,6 +2202,7 @@ int main(int argc, char *argv[]) { test_is_valid_documentation_url(); test_file_in_same_dir(); test_endswith(); + test_endswith_no_case(); test_close_nointr(); test_unlink_noerrno(); test_readlink_and_make_absolute(); @@ -2169,6 +2225,7 @@ int main(int argc, char *argv[]) { test_shell_maybe_quote(); test_parse_mode(); test_tempfn(); + test_strcmp_ptr(); return 0; } diff --git a/src/timesync/timesyncd.c b/src/timesync/timesyncd.c index b030206948..7b4178c993 100644 --- a/src/timesync/timesyncd.c +++ b/src/timesync/timesyncd.c @@ -113,10 +113,6 @@ int main(int argc, char *argv[]) { if (r < 0) goto finish; - /* We need one process for ourselves, plus one thread for the asynchronous resolver */ - if (setrlimit(RLIMIT_NPROC, &RLIMIT_MAKE_CONST(2)) < 0) - log_warning_errno(errno, "Failed to lower RLIMIT_NPROC to 2: %m"); - assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0); r = manager_new(&m); diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c index 73b19d8e89..82cbf95f1e 100644 --- a/src/tty-ask-password-agent/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -162,8 +162,7 @@ static int ask_password_plymouth( /* Hmm, first try with cached * passwords failed, so let's retry * with a normal password request */ - free(packet); - packet = NULL; + packet = mfree(packet); if (asprintf(&packet, "*\002%c%s%n", (int) (strlen(message) + 1), message, &n) < 0) return -ENOMEM; diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c index 4ca0a69d7d..aa5cda6fe7 100644 --- a/src/udev/udev-builtin-path_id.c +++ b/src/udev/udev-builtin-path_id.c @@ -674,20 +674,16 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool * might produce conflicting IDs if the parent does not provide a * unique and predictable name. */ - if (!supported_parent) { - free(path); - path = NULL; - } + if (!supported_parent) + path = mfree(path); /* * Do not return block devices without a well-known transport. Some * devices do not expose their buses and do not provide a unique * and predictable name that way. */ - if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport) { - free(path); - path = NULL; - } + if (streq(udev_device_get_subsystem(dev), "block") && !supported_transport) + path = mfree(path); out: if (path != NULL) { diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index d00f90afa6..368da9b1ae 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -2429,8 +2429,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, rules_str(rules, rule->rule.filename_off), rule->rule.filename_line); break; } - free(event->name); - event->name = strdup(name_str); + free_and_strdup(&event->name, name_str); log_debug("NAME '%s' %s:%u", event->name, rules_str(rules, rule->rule.filename_off), @@ -2590,8 +2589,7 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules) { uid = 0; gid = 0; mode = 0; - strv_free(tags); - tags = NULL; + tags = strv_free(tags); break; case TK_A_OWNER_ID: uid = cur->key.uid; |