shithub: opus

Download patch

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)