Changeset 003c413 in mainline for uspace/lib/riff/src/rwave.c


Ignore:
Timestamp:
2020-09-19T18:55:28Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d145ecb
Parents:
0ee3157
Message:

RIFF reader should heed parent chunk bounds when starting child chunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/riff/src/rwave.c

    r0ee3157 r003c413  
    255255        }
    256256
    257         rc = riff_ropen(fname, &wr->rr);
     257        rc = riff_ropen(fname, &wr->wave, &wr->rr);
    258258        if (rc != EOK) {
    259259                assert(rc == EIO || rc == ENOMEM);
     
    261261        }
    262262
    263         rc = riff_rchunk_start(wr->rr, &wr->wave);
    264         if (rc != EOK) {
    265                 assert(rc == EIO);
    266                 goto error;
    267         }
    268 
    269         rc = riff_read_uint32(wr->rr, &form_id);
     263        if (wr->wave.ckid != CKID_RIFF) {
     264                printf("Not RIFF file\n");
     265                rc = ENOMEM;
     266                goto error;
     267        }
     268
     269        rc = riff_read_uint32(&wr->wave, &form_id);
    270270        if (rc != EOK) {
    271271                assert(rc == EIO);
     
    279279        }
    280280
    281         rc = riff_rchunk_start(wr->rr, &fmt);
     281        rc = riff_rchunk_start(&wr->wave, &fmt);
    282282        if (rc != EOK) {
    283283                assert(rc == EIO);
     
    291291        }
    292292
    293         rc = riff_rchunk_read(wr->rr, &fmt, &wfmt, sizeof(rwave_fmt_t), &nread);
     293        rc = riff_read(&fmt, &wfmt, sizeof(rwave_fmt_t), &nread);
    294294        if (rc != EOK) {
    295295                printf("error reading fmt chunk\n");
     
    304304        }
    305305
    306         rc = riff_rchunk_end(wr->rr, &fmt);
     306        rc = riff_rchunk_end(&fmt);
    307307        if (rc != EOK) {
    308308                assert(rc == EIO);
     
    318318        }
    319319
    320         rc = riff_rchunk_start(wr->rr, &wr->data);
     320        rc = riff_rchunk_start(&wr->wave, &wr->data);
    321321        if (rc != EOK) {
    322322                assert(rc == EIO);
     
    353353        errno_t rc;
    354354
    355         rc = riff_rchunk_read(wr->rr, &wr->data, buf, bytes, nread);
     355        rc = riff_read(&wr->data, buf, bytes, nread);
    356356        if (rc != EOK) {
    357357                assert(rc == EIO || rc == ELIMIT);
     
    373373        errno_t rc;
    374374
    375         rc = riff_rchunk_end(wr->rr, &wr->wave);
     375        rc = riff_rchunk_end(&wr->wave);
    376376        if (rc != EOK) {
    377377                assert(rc == EIO);
Note: See TracChangeset for help on using the changeset viewer.