ref: f7e67d429feb67c42b98c6d25f271524231b3cc3
parent: 907a52315dd55811701fc6e778799e6d62f2c508
author: Nirbheek Chauhan <nirbheek@centricular.com>
date: Mon Jul 20 12:19:07 EDT 2020
repacketizer_demo: check for read errors to fix compiler warnings Actually check for read errors instead of just storing the return value in a variable that then never gets checked. Also fixes "conversion from 'size_t' to 'int', possible loss of data" compiler warnings on Windows with MSVC caused by storing the size_t returned by fread() into an int variable. Signed-off-by: Mark Harris <mark.hsj@gmail.com>
--- a/src/repacketizer_demo.c
+++ b/src/repacketizer_demo.c
@@ -119,7 +119,19 @@
for (i=0;i<nb_packets;i++)
{
unsigned char ch[4];
- err = fread(ch, 1, 4, fin);
+ if (fread(ch, 1, 4, fin)!=4)
+ {
+ if (feof(fin))
+ {
+ eof = 1;
+ } else {
+ fprintf(stderr, "Error reading payload length.\n");
+ fclose(fin);
+ fclose(fout);
+ return EXIT_FAILURE;
+ }
+ break;
+ }
len[i] = char_to_int(ch);
/*fprintf(stderr, "in len = %d\n", len[i]);*/
if (len[i]>1500 || len[i]<0)
@@ -135,13 +147,31 @@
}
break;
}
- err = fread(ch, 1, 4, fin);
- rng[i] = char_to_int(ch);
- err = fread(packets[i], 1, len[i], fin);
- if (feof(fin))
+ if (fread(ch, 1, 4, fin)!=4)
{
- eof = 1;
- break;
+ if (feof(fin))
+ {
+ eof = 1;
+ } else {
+ fprintf(stderr, "Error reading.\n");
+ fclose(fin);
+ fclose(fout);
+ return EXIT_FAILURE;
+ }
+ break;
+ }
+ rng[i] = char_to_int(ch);
+ if (fread(packets[i], len[i], 1, fin)!=1) {
+ if (feof(fin))
+ {
+ eof = 1;
+ } else {
+ fprintf(stderr, "Error reading packet of %u bytes.\n", len[i]);
+ fclose(fin);
+ fclose(fout);
+ return EXIT_FAILURE;
+ }
+ break;
}
err = opus_repacketizer_cat(rp, packets[i], len[i]);
if (err!=OPUS_OK)