|
Zbigniew Jędrzejewski-Szmek |
436654 |
From 929227823d61ecc408d85b328ab04604e7f540cf Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
From: Tom Gundersen <teg@jklm.no>
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
Date: Wed, 3 Jun 2015 22:08:46 +0200
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
Subject: [PATCH] libudev: enumerate - accept NULL parameters in add_match()
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
This was a regression introduced when moving to sd-device.
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
(cherry picked from commit 54f0b4d9a3e3e1b955d0b0021d9678571d91a5ef)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
src/libsystemd/sd-device/device-enumerator.c | 18 ++++++++++--------
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
src/libudev/libudev-enumerate.c | 21 +++++++++++++++++++++
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
2 files changed, 31 insertions(+), 8 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
diff --git a/src/libsystemd/sd-device/device-enumerator.c b/src/libsystemd/sd-device/device-enumerator.c
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
index 3692d46e06..7fd77e9480 100644
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
--- a/src/libsystemd/sd-device/device-enumerator.c
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+++ b/src/libsystemd/sd-device/device-enumerator.c
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -137,7 +137,6 @@ _public_ int sd_device_enumerator_add_match_sysattr(sd_device_enumerator *enumer
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(enumerator, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(_sysattr, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
- assert_return(_value, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
if (match)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
hashmap = &enumerator->match_sysattr;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -152,9 +151,11 @@ _public_ int sd_device_enumerator_add_match_sysattr(sd_device_enumerator *enumer
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
if (!sysattr)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
return -ENOMEM;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
- value = strdup(_value);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
- if (!value)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
- return -ENOMEM;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (_value) {
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ value = strdup(_value);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (!value)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ return -ENOMEM;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
r = hashmap_put(*hashmap, sysattr, value);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
if (r < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -174,7 +175,6 @@ _public_ int sd_device_enumerator_add_match_property(sd_device_enumerator *enume
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(enumerator, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(_property, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
- assert_return(_value, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
r = hashmap_ensure_allocated(&enumerator->match_property, NULL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
if (r < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -184,9 +184,11 @@ _public_ int sd_device_enumerator_add_match_property(sd_device_enumerator *enume
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
if (!property)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
return -ENOMEM;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
- value = strdup(_value);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
- if (!value)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
- return -ENOMEM;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (_value) {
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ value = strdup(_value);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (!value)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ return -ENOMEM;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
r = hashmap_put(enumerator->match_property, property, value);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
if (r < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
index 255fbe808d..df088946df 100644
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
--- a/src/libudev/libudev-enumerate.c
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+++ b/src/libudev/libudev-enumerate.c
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -196,6 +196,9 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
_public_ int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem) {
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(udev_enumerate, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (!subsystem)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
return sd_device_enumerator_add_match_subsystem(udev_enumerate->enumerator, subsystem, true);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -211,6 +214,9 @@ _public_ int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enum
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
_public_ int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem) {
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(udev_enumerate, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (!subsystem)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
return sd_device_enumerator_add_match_subsystem(udev_enumerate->enumerator, subsystem, false);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -227,6 +233,9 @@ _public_ int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_en
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
_public_ int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value) {
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(udev_enumerate, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (!sysattr)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
return sd_device_enumerator_add_match_sysattr(udev_enumerate->enumerator, sysattr, value, true);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -243,6 +252,9 @@ _public_ int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumer
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
_public_ int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value) {
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(udev_enumerate, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (!sysattr)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
return sd_device_enumerator_add_match_sysattr(udev_enumerate->enumerator, sysattr, value, false);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -259,6 +271,9 @@ _public_ int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enum
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
_public_ int udev_enumerate_add_match_property(struct udev_enumerate *udev_enumerate, const char *property, const char *value) {
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(udev_enumerate, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (!property)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
return sd_device_enumerator_add_match_property(udev_enumerate->enumerator, property, value);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -274,6 +289,9 @@ _public_ int udev_enumerate_add_match_property(struct udev_enumerate *udev_enume
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
_public_ int udev_enumerate_add_match_tag(struct udev_enumerate *udev_enumerate, const char *tag) {
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(udev_enumerate, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (!tag)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
return sd_device_enumerator_add_match_tag(udev_enumerate->enumerator, tag);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
@@ -335,6 +353,9 @@ _public_ int udev_enumerate_add_match_is_initialized(struct udev_enumerate *udev
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
_public_ int udev_enumerate_add_match_sysname(struct udev_enumerate *udev_enumerate, const char *sysname) {
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
assert_return(udev_enumerate, -EINVAL);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ if (!sysname)
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
return sd_device_enumerator_add_match_sysname(udev_enumerate->enumerator, sysname);
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
436654 |
|