/[pkg-src]/trunk/systemd/patches/systemd-220-libudev-enumerate-accept-null-parameters-in-add_match.patch |
Annotation of /trunk/systemd/patches/systemd-220-libudev-enumerate-accept-null-parameters-in-add_match.patch
Parent Directory | Revision Log
Revision 2587 -
(hide annotations)
(download)
Thu Jun 18 13:12:27 2015 UTC (9 years, 3 months ago) by niro
File size: 5291 byte(s)
Thu Jun 18 13:12:27 2015 UTC (9 years, 3 months ago) by niro
File size: 5291 byte(s)
upstream fixes
1 | niro | 2587 | From 54f0b4d9a3e3e1b955d0b0021d9678571d91a5ef Mon Sep 17 00:00:00 2001 |
2 | From: Tom Gundersen <teg@jklm.no> | ||
3 | Date: Wed, 3 Jun 2015 22:08:46 +0200 | ||
4 | Subject: libudev: enumerate - accept NULL parameters in add_match() | ||
5 | |||
6 | This was a regression introduced when moving to sd-device. | ||
7 | |||
8 | diff --git a/src/libsystemd/sd-device/device-enumerator.c b/src/libsystemd/sd-device/device-enumerator.c | ||
9 | index 3692d46..7fd77e9 100644 | ||
10 | --- a/src/libsystemd/sd-device/device-enumerator.c | ||
11 | +++ b/src/libsystemd/sd-device/device-enumerator.c | ||
12 | @@ -137,7 +137,6 @@ _public_ int sd_device_enumerator_add_match_sysattr(sd_device_enumerator *enumer | ||
13 | |||
14 | assert_return(enumerator, -EINVAL); | ||
15 | assert_return(_sysattr, -EINVAL); | ||
16 | - assert_return(_value, -EINVAL); | ||
17 | |||
18 | if (match) | ||
19 | hashmap = &enumerator->match_sysattr; | ||
20 | @@ -152,9 +151,11 @@ _public_ int sd_device_enumerator_add_match_sysattr(sd_device_enumerator *enumer | ||
21 | if (!sysattr) | ||
22 | return -ENOMEM; | ||
23 | |||
24 | - value = strdup(_value); | ||
25 | - if (!value) | ||
26 | - return -ENOMEM; | ||
27 | + if (_value) { | ||
28 | + value = strdup(_value); | ||
29 | + if (!value) | ||
30 | + return -ENOMEM; | ||
31 | + } | ||
32 | |||
33 | r = hashmap_put(*hashmap, sysattr, value); | ||
34 | if (r < 0) | ||
35 | @@ -174,7 +175,6 @@ _public_ int sd_device_enumerator_add_match_property(sd_device_enumerator *enume | ||
36 | |||
37 | assert_return(enumerator, -EINVAL); | ||
38 | assert_return(_property, -EINVAL); | ||
39 | - assert_return(_value, -EINVAL); | ||
40 | |||
41 | r = hashmap_ensure_allocated(&enumerator->match_property, NULL); | ||
42 | if (r < 0) | ||
43 | @@ -184,9 +184,11 @@ _public_ int sd_device_enumerator_add_match_property(sd_device_enumerator *enume | ||
44 | if (!property) | ||
45 | return -ENOMEM; | ||
46 | |||
47 | - value = strdup(_value); | ||
48 | - if (!value) | ||
49 | - return -ENOMEM; | ||
50 | + if (_value) { | ||
51 | + value = strdup(_value); | ||
52 | + if (!value) | ||
53 | + return -ENOMEM; | ||
54 | + } | ||
55 | |||
56 | r = hashmap_put(enumerator->match_property, property, value); | ||
57 | if (r < 0) | ||
58 | diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c | ||
59 | index 255fbe8..df08894 100644 | ||
60 | --- a/src/libudev/libudev-enumerate.c | ||
61 | +++ b/src/libudev/libudev-enumerate.c | ||
62 | @@ -196,6 +196,9 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume | ||
63 | _public_ int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem) { | ||
64 | assert_return(udev_enumerate, -EINVAL); | ||
65 | |||
66 | + if (!subsystem) | ||
67 | + return 0; | ||
68 | + | ||
69 | return sd_device_enumerator_add_match_subsystem(udev_enumerate->enumerator, subsystem, true); | ||
70 | } | ||
71 | |||
72 | @@ -211,6 +214,9 @@ _public_ int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enum | ||
73 | _public_ int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem) { | ||
74 | assert_return(udev_enumerate, -EINVAL); | ||
75 | |||
76 | + if (!subsystem) | ||
77 | + return 0; | ||
78 | + | ||
79 | return sd_device_enumerator_add_match_subsystem(udev_enumerate->enumerator, subsystem, false); | ||
80 | } | ||
81 | |||
82 | @@ -227,6 +233,9 @@ _public_ int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_en | ||
83 | _public_ int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value) { | ||
84 | assert_return(udev_enumerate, -EINVAL); | ||
85 | |||
86 | + if (!sysattr) | ||
87 | + return 0; | ||
88 | + | ||
89 | return sd_device_enumerator_add_match_sysattr(udev_enumerate->enumerator, sysattr, value, true); | ||
90 | } | ||
91 | |||
92 | @@ -243,6 +252,9 @@ _public_ int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumer | ||
93 | _public_ int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value) { | ||
94 | assert_return(udev_enumerate, -EINVAL); | ||
95 | |||
96 | + if (!sysattr) | ||
97 | + return 0; | ||
98 | + | ||
99 | return sd_device_enumerator_add_match_sysattr(udev_enumerate->enumerator, sysattr, value, false); | ||
100 | } | ||
101 | |||
102 | @@ -259,6 +271,9 @@ _public_ int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enum | ||
103 | _public_ int udev_enumerate_add_match_property(struct udev_enumerate *udev_enumerate, const char *property, const char *value) { | ||
104 | assert_return(udev_enumerate, -EINVAL); | ||
105 | |||
106 | + if (!property) | ||
107 | + return 0; | ||
108 | + | ||
109 | return sd_device_enumerator_add_match_property(udev_enumerate->enumerator, property, value); | ||
110 | } | ||
111 | |||
112 | @@ -274,6 +289,9 @@ _public_ int udev_enumerate_add_match_property(struct udev_enumerate *udev_enume | ||
113 | _public_ int udev_enumerate_add_match_tag(struct udev_enumerate *udev_enumerate, const char *tag) { | ||
114 | assert_return(udev_enumerate, -EINVAL); | ||
115 | |||
116 | + if (!tag) | ||
117 | + return 0; | ||
118 | + | ||
119 | return sd_device_enumerator_add_match_tag(udev_enumerate->enumerator, tag); | ||
120 | } | ||
121 | |||
122 | @@ -335,6 +353,9 @@ _public_ int udev_enumerate_add_match_is_initialized(struct udev_enumerate *udev | ||
123 | _public_ int udev_enumerate_add_match_sysname(struct udev_enumerate *udev_enumerate, const char *sysname) { | ||
124 | assert_return(udev_enumerate, -EINVAL); | ||
125 | |||
126 | + if (!sysname) | ||
127 | + return 0; | ||
128 | + | ||
129 | return sd_device_enumerator_add_match_sysname(udev_enumerate->enumerator, sysname); | ||
130 | } | ||
131 | |||
132 | -- | ||
133 | cgit v0.10.2 | ||
134 |