summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2022-08-10 14:00:53 +0200
committerDavid Tardon <dtardon@redhat.com>2022-09-13 08:13:42 +0200
commitc9958c4fc55a916885defc3f91f4b0834ba891b4 (patch)
treebb0c27eef9b639ba177da87d49de35fbd62d514e
parent995340074e554b4bf4a0fdb0cb7436692c5a4ffd (diff)
downloadsystemd-c9958c4fc55a916885defc3f91f4b0834ba891b4.tar.gz
tree-wide: check parameter before dereferencing
-rw-r--r--src/core/job.c6
-rw-r--r--src/core/unit.c4
-rw-r--r--src/shared/journal-importer.c2
-rw-r--r--src/socket-proxy/socket-proxyd.c6
-rw-r--r--src/udev/udev-event.c18
5 files changed, 28 insertions, 8 deletions
diff --git a/src/core/job.c b/src/core/job.c
index 5a83be0679..33ac89dd57 100644
--- a/src/core/job.c
+++ b/src/core/job.c
@@ -1373,10 +1373,12 @@ void job_shutdown_magic(Job *j) {
int job_get_timeout(Job *j, usec_t *timeout) {
usec_t x = USEC_INFINITY, y = USEC_INFINITY;
- Unit *u = j->unit;
+ Unit *u;
int r;
- assert(u);
+ assert(j);
+
+ u = ASSERT_PTR(j->unit);
if (j->timer_event_source) {
r = sd_event_source_get_time(j->timer_event_source, &x);
diff --git a/src/core/unit.c b/src/core/unit.c
index ce2bc9f3d8..89cbb7d693 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -1448,10 +1448,12 @@ int unit_load_fragment_and_dropin(Unit *u, bool fragment_required) {
}
void unit_add_to_target_deps_queue(Unit *u) {
- Manager *m = u->manager;
+ Manager *m;
assert(u);
+ m = ASSERT_PTR(u->manager);
+
if (u->in_target_deps_queue)
return;
diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c
index 7c355b6c89..66481da267 100644
--- a/src/shared/journal-importer.c
+++ b/src/shared/journal-importer.c
@@ -36,7 +36,7 @@ void journal_importer_cleanup(JournalImporter *imp) {
}
static char* realloc_buffer(JournalImporter *imp, size_t size) {
- char *b, *old = imp->buf;
+ char *b, *old = ASSERT_PTR(imp)->buf;
b = GREEDY_REALLOC(imp->buf, size);
if (!b)
diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c
index 7fef53f00d..68d13b795a 100644
--- a/src/socket-proxy/socket-proxyd.c
+++ b/src/socket-proxy/socket-proxyd.c
@@ -95,9 +95,13 @@ static int idle_time_cb(sd_event_source *s, uint64_t usec, void *userdata) {
}
static int connection_release(Connection *c) {
- Context *context = c->context;
+ Context *context;
int r;
+ assert(c);
+
+ context = ASSERT_PTR(c->context);
+
connection_free(c);
if (arg_exit_idle_time < USEC_INFINITY && set_isempty(context->connections)) {
diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
index 14607a6c13..2bba5f5229 100644
--- a/src/udev/udev-event.c
+++ b/src/udev/udev-event.c
@@ -241,12 +241,16 @@ static ssize_t udev_event_subst_format(
size_t l,
bool *ret_truncated) {
- sd_device *parent, *dev = event->dev;
+ sd_device *parent, *dev;
const char *val = NULL;
bool truncated = false;
char *s = dest;
int r;
+ assert(event);
+
+ dev = ASSERT_PTR(event->dev);
+
switch (type) {
case FORMAT_SUBST_DEVPATH:
r = sd_device_get_devpath(dev, &val);
@@ -938,9 +942,13 @@ static int rename_netif(UdevEvent *event) {
}
static int update_devnode(UdevEvent *event) {
- sd_device *dev = event->dev;
+ sd_device *dev;
int r;
+ assert(event);
+
+ dev = ASSERT_PTR(event->dev);
+
r = sd_device_get_devnum(dev, NULL);
if (r == -ENOENT)
return 0;
@@ -982,9 +990,13 @@ static int event_execute_rules_on_remove(
Hashmap *properties_list,
UdevRules *rules) {
- sd_device *dev = event->dev;
+ sd_device *dev;
int r;
+ assert(event);
+
+ dev = ASSERT_PTR(event->dev);
+
r = device_read_db_internal(dev, true);
if (r < 0)
log_device_debug_errno(dev, r, "Failed to read database under /run/udev/data/: %m");