# HG changeset patch # User Matti Hamalainen # Date 1425652635 -7200 # Node ID 8b6ed580e80036de18d5f576e97fe7a063c8837a # Parent b8c9af10b7fd79c1a51f44608be0676a82fc2dd1 Add sanity check to order list writing. diff -r b8c9af10b7fd -r 8b6ed580e800 tools/xm2jss.c --- 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",