From e4d36a124f8f2a2c5cafa265684f7b820fcd7549 Mon Sep 17 00:00:00 2001 From: Joerg Steffens Date: Fri, 26 Sep 2014 11:33:51 +0200 Subject: [PATCH] print_config: check if resource it used at all prevents a segfault on director, when running with debug >= 900 Signed-off-by: Marco van Wieringen --- src/lib/parse_conf.h | 4 ++-- src/lib/res.c | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/parse_conf.h b/src/lib/parse_conf.h index 3c400619ab6..4266ded5a07 100644 --- a/src/lib/parse_conf.h +++ b/src/lib/parse_conf.h @@ -116,8 +116,8 @@ class RES { char *name; /* resource name */ char *desc; /* resource description */ uint32_t rcode; /* resource id or type */ - int32_t refcnt; /* reference count for releasing */ - char item_present[MAX_RES_ITEMS]; /* set if item is present in conf file */ + int32_t refcnt; /* reference count for releasing */ + char item_present[MAX_RES_ITEMS]; /* set if item is present in conf file */ }; /* diff --git a/src/lib/res.c b/src/lib/res.c index f806a2e1ce8..3afd5329215 100644 --- a/src/lib/res.c +++ b/src/lib/res.c @@ -1398,6 +1398,14 @@ bool BRSRES::print_config(POOL_MEM &buff) int i = 0; int rindex = this->hdr.rcode - my_config->m_r_first; + /* + * If entry is not used, then there is nothing to print. + */ + if (this->hdr.rcode < my_config->m_r_first || + this->hdr.refcnt <= 0) { + return true; + } + /* * Make sure the resource class has any items. */