static int test_hrt(const uint8 *data, char *t, int s) { int i; PW_REQUEST_DATA(s, 1084); if (readmem32b(data + 1080) != MAGIC4('H','R','T','!')) return -1; for (i = 0; i < 31; i++) { const uint8 *d = data + 20 + i * 30; /* test finetune */ if (d[24] > 0x0f) return -1; /* test volume */ if (d[25] > 0x40) return -1; } pw_read_title(data, t, 20); return 0; }
static int test_fuzz (uint8 *data, int s) { int j, k; int start = 0, ssize = 0; if (readmem32b(data) != MAGIC4('M','1','.','0')) return -1; /* test finetune */ for (k = 0; k < 31; k++) { if (data[start + 72 + k * 68] > 0x0f) return -1; } /* test volumes */ for (k = 0; k < 31; k++) { if (data[start + 73 + k * 68] > 0x40) return -1; } /* test sample sizes */ for (k = 0; k < 31; k++) { j = readmem16b(data + start + k * 68 + 66); if (j > 0x8000) return -1; ssize += j * 2; } /* test size of pattern list */ if (data[start + 2114] == 0x00) return -1; return 0; }
static int gal4_test(HIO_HANDLE *f, char *t, const int start) { if (hio_read32b(f) != MAGIC4('R', 'I', 'F', 'F')) return -1; hio_read32b(f); if (hio_read32b(f) != MAGIC4('A', 'M', 'F', 'F')) return -1; if (hio_read32b(f) != MAGIC4('M', 'A', 'I', 'N')) return -1; hio_read32b(f); /* skip size */ read_title(f, t, 64); return 0; }
static int test_ntp(uint8 *data, int s) { int j, k; int start = 0; PW_REQUEST_DATA(s, 64); if (readmem32b(data + start) != MAGIC4('M','O','D','U')) return -1; j = readmem16b(data + start + 20) + 4; /* "BODY" tag */ k = readmem16b(data + start + 28) + j + 4; /* "SAMP" tag */ PW_REQUEST_DATA(s, j + 4); if (readmem32b(data + start + j) != MAGIC4('B','O','D','Y')) return -1; PW_REQUEST_DATA(s, k + 4); if (readmem32b(data + start + k) != MAGIC4('S','A','M','P')) return -1; return 0; }
static int test_skyt(const uint8 *data, char *t, int s) { int i; PW_REQUEST_DATA(s, 8 * 31 + 12); /* test 2 */ for (i = 0; i < 31; i++) { if (data[8 * i + 4] > 0x40) return -1; } if (readmem32b(data + 256) != MAGIC4('S','K','Y','T')) return -1; pw_read_title(NULL, t, 0); return 0; }