summaryrefslogtreecommitdiffstats
path: root/cddl/contrib/opensolaris/common
diff options
context:
space:
mode:
authormarkj <markj@FreeBSD.org>2015-03-10 20:52:03 +0000
committermarkj <markj@FreeBSD.org>2015-03-10 20:52:03 +0000
commitc50bfa1dd2c305908186e05a497f62bd792134b6 (patch)
tree6b4950c0a53c352127e5563d9b6742c615969673 /cddl/contrib/opensolaris/common
parent6bcf6bdf568e7a255feccc4a4036b1c00d0f8ae8 (diff)
downloadFreeBSD-src-c50bfa1dd2c305908186e05a497f62bd792134b6.zip
FreeBSD-src-c50bfa1dd2c305908186e05a497f62bd792134b6.tar.gz
ctf_discard(): fetch the next list element before restarting the loop. If
we end up skipping a dynamic type because it has already been committed to the container, we would previously either set the loop variable to an uninitialized local variable, or set it to itself, resulting in an infinite loop. MFC after: 2 weeks Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'cddl/contrib/opensolaris/common')
-rw-r--r--cddl/contrib/opensolaris/common/ctf/ctf_create.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/cddl/contrib/opensolaris/common/ctf/ctf_create.c b/cddl/contrib/opensolaris/common/ctf/ctf_create.c
index 7364814..41e81e5 100644
--- a/cddl/contrib/opensolaris/common/ctf/ctf_create.c
+++ b/cddl/contrib/opensolaris/common/ctf/ctf_create.c
@@ -583,10 +583,10 @@ ctf_discard(ctf_file_t *fp)
return (0); /* no update required */
for (dtd = ctf_list_prev(&fp->ctf_dtdefs); dtd != NULL; dtd = ntd) {
+ ntd = ctf_list_prev(dtd);
if (dtd->dtd_type <= fp->ctf_dtoldid)
continue; /* skip types that have been committed */
- ntd = ctf_list_prev(dtd);
ctf_dtd_delete(fp, dtd);
}
OpenPOWER on IntegriCloud