Check creationTime only if LLONG_MAX > UINT64_MAX
If LLONG_MAX <= UINT64_MAX, creationTime > UINT64_MAX is always false
regardless of the value of creationTime. So only check creationTime if
LLONG_MAX > UINT64_MAX.
Similarly for modificationTime.
Fix Coverity CID 549268 and CID 549269: Operands don't affect result
(CONSTANT_EXPRESSION_RESULT).
diff --git a/apps/avifenc.c b/apps/avifenc.c
index fefac66..79c185d 100644
--- a/apps/avifenc.c
+++ b/apps/avifenc.c
@@ -10,6 +10,7 @@
#include <assert.h>
#include <inttypes.h>
+#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -1910,18 +1911,30 @@
} else if (!strcmp(arg, "--creation-time")) {
NEXTARG();
long long creationTime = strtoll(arg, NULL, 0);
- if (creationTime < 0 || (unsigned long long)creationTime > UINT64_MAX) {
+ if (creationTime < 0) {
fprintf(stderr, "ERROR: Invalid creation time: %lld\n", creationTime);
goto cleanup;
}
+#if LLONG_MAX > UINT64_MAX
+ if ((unsigned long long)creationTime > UINT64_MAX) {
+ fprintf(stderr, "ERROR: Invalid creation time: %lld\n", creationTime);
+ goto cleanup;
+ }
+#endif
settings.creationTime = (uint64_t)creationTime;
} else if (!strcmp(arg, "--modification-time")) {
NEXTARG();
long long modificationTime = strtoll(arg, NULL, 0);
- if (modificationTime < 0 || (unsigned long long)modificationTime > UINT64_MAX) {
+ if (modificationTime < 0) {
fprintf(stderr, "ERROR: Invalid modification time: %lld\n", modificationTime);
goto cleanup;
}
+#if LLONG_MAX > UINT64_MAX
+ if ((unsigned long long)modificationTime > UINT64_MAX) {
+ fprintf(stderr, "ERROR: Invalid modification time: %lld\n", modificationTime);
+ goto cleanup;
+ }
+#endif
settings.modificationTime = (uint64_t)modificationTime;
} else if (!strcmp(arg, "-c") || !strcmp(arg, "--codec")) {
NEXTARG();