comparison tools/xm2jss.c @ 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 5b8245e5f785
children 5e2b90e3e4bc
comparison
equal deleted inserted replaced
1236:b8c9af10b7fd 1237:8b6ed580e800
486 dmMsg(1," * JSSMOD-header 0x%04x, %d bytes.\n", JSSMOD_VERSION, totalSize); 486 dmMsg(1," * JSSMOD-header 0x%04x, %d bytes.\n", JSSMOD_VERSION, totalSize);
487 487
488 // Write orders list 488 // Write orders list
489 for (totalSize = order = 0; order < m->norders; order++) 489 for (totalSize = order = 0; order < m->norders; order++)
490 { 490 {
491 Uint16 tmp = m->orderList[order]; 491 int tmp = m->orderList[order];
492 totalSize += sizeof(tmp); 492 if (tmp == jsetNotSet || tmp > m->npatterns)
493 if (fwrite(&tmp, sizeof(tmp), 1, outFile) != 1) 493 JSSERROR(DMERR_INVALID_DATA, DMERR_INVALID_DATA,
494 JSSERROR(DMERR_FWRITE, DMERR_FWRITE, "Could not write JSSMOD orders list.\n"); 494 "Orderlist entry #%d has invalid value %d.\n",
495 order, tmp);
496
497 if (!dm_fwrite_le16(outFile, tmp))
498 JSSERROR(DMERR_FWRITE, DMERR_FWRITE,
499 "Could not write JSSMOD orders list entry #%d (%d).\n",
500 order, tmp);
501
502 totalSize += sizeof(Uint16);
495 } 503 }
496 504
497 dmMsg(1," * %d item orders list, %d bytes.\n", 505 dmMsg(1," * %d item orders list, %d bytes.\n",
498 m->norders, totalSize); 506 m->norders, totalSize);
499 507