ref: 98f3ddc8e94b8be31ebdeac52805a93cfab395e7
parent: 7b92abb9f17b4ec813344cad2aa931d17926c7b2
author: Mark Harris <mark.hsj@gmail.com>
date: Sat Nov 11 13:23:03 EST 2023
opusinfo: Silence GCC 12 compiler warning src/opusinfo.c: In function 'check_xiph_comment': src/opusinfo.c:297:32: warning: argument 1 range [18446744072098938880, 18446744073709551615] exceeds maximum object size 9223372036854775807 [-Walloc-size-larger-than=] 297 | data=(unsigned char *)malloc(data_sz*sizeof(*data)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- a/src/opusinfo.c
+++ b/src/opusinfo.c
@@ -122,17 +122,13 @@
for(j=0; j < sep-comment; j++) {
if(comment[j] < 0x20 || comment[j] > 0x7D) {
- oi_warn(_("WARNING: Invalid comment fieldname in "
+ oi_warn(_("WARNING: Invalid comment tag in "
"comment %d (stream %d): \"%s\"\n"),
i, stream->num, comment);
- broken = 1;
- break;
+ return;
}
}
- if(broken)
- return;
-
val = (unsigned char *)comment;
j = sep-comment+1;
@@ -286,15 +282,15 @@
}
len>>=2;
data_sz=3*len;
- if(data_sz > 0) {
+ if(data_sz > 2) {
if(comment[comment_length - 1] == '=') {
data_sz--;
+ if(comment[comment_length - 2] == '=') {
+ data_sz--;
+ }
}
- if(comment[comment_length - 2] == '=') {
- data_sz--;
- }
}
- data=(unsigned char *)malloc(data_sz*sizeof(*data));
+ data=data_sz>0?(unsigned char *)malloc(data_sz*sizeof(*data)):NULL;
for (j = 0; j < len; j++) {
ogg_uint32_t value;
int k;