summaryrefslogtreecommitdiffstats
path: root/dbm.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2018-11-19 19:22:07 +0000
committerIngo Schwarze <schwarze@openbsd.org>2018-11-19 19:22:07 +0000
commit32b67cbf6659b6b8149a3cf8e043f34c2ff3c108 (patch)
tree07ad1b0fcd60a0ff806ec4697793691a28010e4b /dbm.c
parent6ec56464f278da7f91092e441e3411680237b171 (diff)
downloadmandoc-32b67cbf6659b6b8149a3cf8e043f34c2ff3c108.tar.gz
Correctly construct empty lists in dbm_page_get().
Original commit message by the author of this bugfix patch, bluhm@: lstmatch() expects a list of strings separated by \0 and terminated with \0\0. In the NULL case dbm_page_get() returned only simple strings so correct processing was depending on data layout. Use an additional \0 to terminate the single string lists. Found by mandoc regress since llvm linker on amd64 arranges strings differently.
Diffstat (limited to 'dbm.c')
-rw-r--r--dbm.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/dbm.c b/dbm.c
index 0bb5abb1..5f6daf10 100644
--- a/dbm.c
+++ b/dbm.c
@@ -151,17 +151,17 @@ dbm_page_get(int32_t ip)
assert(ip < npages);
res.name = dbm_get(pages[ip].name);
if (res.name == NULL)
- res.name = "(NULL)";
+ res.name = "(NULL)\0";
res.sect = dbm_get(pages[ip].sect);
if (res.sect == NULL)
- res.sect = "(NULL)";
+ res.sect = "(NULL)\0";
res.arch = pages[ip].arch ? dbm_get(pages[ip].arch) : NULL;
res.desc = dbm_get(pages[ip].desc);
if (res.desc == NULL)
res.desc = "(NULL)";
res.file = dbm_get(pages[ip].file);
if (res.file == NULL)
- res.file = " (NULL)";
+ res.file = " (NULL)\0";
res.addr = dbm_addr(pages + ip);
return &res;
}