From 7478c104fc479067d71d191dccfa4cbf541311d8 Mon Sep 17 00:00:00 2001 From: Georgy Yakovlev Date: Thu, 21 Feb 2019 14:24:44 -0800 Subject: [PATCH] librc/librc-depend.c: fix NULL pointer dereference In some cases deptree or depinfo can be NULL, check before dereferencing. Fixes https://github.com/OpenRC/openrc/issues/293 Fixes https://github.com/OpenRC/openrc/pulls/294 X-Gentoo-Bug: 659906 X-Gentoo-Bug-URL: https://bugs.gentoo.org/659906 --- src/librc/librc-depend.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/librc/librc-depend.c b/src/librc/librc-depend.c index 0d894e20..f010a072 100644 --- a/src/librc/librc-depend.c +++ b/src/librc/librc-depend.c @@ -84,10 +84,11 @@ static RC_DEPINFO * get_depinfo(const RC_DEPTREE *deptree, const char *service) { RC_DEPINFO *di; - - TAILQ_FOREACH(di, deptree, entries) - if (strcmp(di->service, service) == 0) - return di; + if (deptree) { + TAILQ_FOREACH(di, deptree, entries) + if (strcmp(di->service, service) == 0) + return di; + } return NULL; } @@ -96,9 +97,11 @@ get_deptype(const RC_DEPINFO *depinfo, const char *type) { RC_DEPTYPE *dt; - TAILQ_FOREACH(dt, &depinfo->depends, entries) - if (strcmp(dt->type, type) == 0) - return dt; + if (depinfo) { + TAILQ_FOREACH(dt, &depinfo->depends, entries) + if (strcmp(dt->type, type) == 0) + return dt; + } return NULL; }