Magellan Linux

Annotation 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 - (hide annotations) (download)
Thu Jun 18 13:12:27 2015 UTC (8 years, 11 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