Mercurial > hg > dmlib
changeset 1237:8b6ed580e800
Add sanity check to order list writing.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 06 Mar 2015 16:37:15 +0200 |
parents | b8c9af10b7fd |
children | e8c99da451cd |
files | tools/xm2jss.c |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/tools/xm2jss.c Fri Mar 06 16:36:10 2015 +0200 +++ b/tools/xm2jss.c Fri Mar 06 16:37:15 2015 +0200 @@ -488,10 +488,18 @@ // Write orders list for (totalSize = order = 0; order < m->norders; order++) { - Uint16 tmp = m->orderList[order]; - totalSize += sizeof(tmp); - if (fwrite(&tmp, sizeof(tmp), 1, outFile) != 1) - JSSERROR(DMERR_FWRITE, DMERR_FWRITE, "Could not write JSSMOD orders list.\n"); + int tmp = m->orderList[order]; + if (tmp == jsetNotSet || tmp > m->npatterns) + JSSERROR(DMERR_INVALID_DATA, DMERR_INVALID_DATA, + "Orderlist entry #%d has invalid value %d.\n", + order, tmp); + + if (!dm_fwrite_le16(outFile, tmp)) + JSSERROR(DMERR_FWRITE, DMERR_FWRITE, + "Could not write JSSMOD orders list entry #%d (%d).\n", + order, tmp); + + totalSize += sizeof(Uint16); } dmMsg(1," * %d item orders list, %d bytes.\n",