diff --git a/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c b/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c index 3dc2ad0cbda..aaf1382b1f1 100644 --- a/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c +++ b/cddl/contrib/opensolaris/tools/ctf/cvt/merge.c @@ -179,11 +179,23 @@ struct merge_cb_data { static void add_mapping(alist_t *ta, tid_t srcid, tid_t tgtid) { + static int checkid = -1; + + if (checkid == -1) + checkid = getenv("CTFMERGE_CHECKID") ? 1 : 0; + debug(3, "Adding mapping %u <%x> => %u <%x>\n", srcid, srcid, tgtid, tgtid); assert(!alist_find(ta, (void *)(uintptr_t)srcid, NULL)); assert(srcid != 0 && tgtid != 0); + if (checkid) { + if (srcid > 32767) + aborterr("srcid overflow: %d\n", srcid); + if (tgtid > 32767) + aborterr("tgtid overflow: %d\n", tgtid); + } + alist_add(ta, (void *)(uintptr_t)srcid, (void *)(uintptr_t)tgtid); }