Magellan Linux

Contents of /trunk/systemd/patches/systemd-220-libudev-enumerate-accept-null-parameters-in-add_match.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2587 - (show annotations) (download)
Thu Jun 18 13:12:27 2015 UTC (8 years, 10 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