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",