/[pkg-src]/trunk/systemd/patches/systemd-220-libudev-enumerate-accept-null-parameters-in-add_match.patch |
Contents of /trunk/systemd/patches/systemd-220-libudev-enumerate-accept-null-parameters-in-add_match.patch
Parent Directory | Revision Log
Revision 2587 -
(show 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 | 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 |