diff options
author | Georgy Yakovlev <gyakovlev@gentoo.org> | 2019-02-21 14:24:44 -0800 |
---|---|---|
committer | William Hubbs <w.d.hubbs@gmail.com> | 2019-02-21 17:49:54 -0600 |
commit | 7478c104fc479067d71d191dccfa4cbf541311d8 (patch) | |
tree | 27d1bfdc1439924c5249f636a546288d0ab6d145 /src/librc | |
parent | 065b7ecc0d4ddd046cc235d60de20140db1a6fe8 (diff) |
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
Diffstat (limited to 'src/librc')
-rw-r--r-- | src/librc/librc-depend.c | 17 |
1 files 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; } |