Flawfinder version 2.0.10, (C) 2001-2019 David A. Wheeler. Number of rules (primarily dangerous function names) in C/C++ ruleset: 223 Examining data/libavif-0.8.3/apps/avifdec.c Examining data/libavif-0.8.3/apps/avifenc.c Examining data/libavif-0.8.3/apps/shared/avifjpeg.c Examining data/libavif-0.8.3/apps/shared/avifjpeg.h Examining data/libavif-0.8.3/apps/shared/avifpng.c Examining data/libavif-0.8.3/apps/shared/avifpng.h Examining data/libavif-0.8.3/apps/shared/avifutil.c Examining data/libavif-0.8.3/apps/shared/avifutil.h Examining data/libavif-0.8.3/apps/shared/iccjpeg.c Examining data/libavif-0.8.3/apps/shared/iccjpeg.h Examining data/libavif-0.8.3/apps/shared/y4m.c Examining data/libavif-0.8.3/apps/shared/y4m.h Examining data/libavif-0.8.3/contrib/gdk-pixbuf/loader.c Examining data/libavif-0.8.3/examples/avif_example_decode_file.c Examining data/libavif-0.8.3/examples/avif_example_decode_memory.c Examining data/libavif-0.8.3/examples/avif_example_decode_streaming.c Examining data/libavif-0.8.3/examples/avif_example_encode.c Examining data/libavif-0.8.3/include/avif/avif.h Examining data/libavif-0.8.3/include/avif/internal.h Examining data/libavif-0.8.3/src/alpha.c Examining data/libavif-0.8.3/src/avif.c Examining data/libavif-0.8.3/src/codec_aom.c Examining data/libavif-0.8.3/src/codec_dav1d.c Examining data/libavif-0.8.3/src/codec_libgav1.c Examining data/libavif-0.8.3/src/codec_rav1e.c Examining data/libavif-0.8.3/src/codec_svt.c Examining data/libavif-0.8.3/src/colr.c Examining data/libavif-0.8.3/src/io.c Examining data/libavif-0.8.3/src/mem.c Examining data/libavif-0.8.3/src/obu.c Examining data/libavif-0.8.3/src/rawdata.c Examining data/libavif-0.8.3/src/read.c Examining data/libavif-0.8.3/src/reformat.c Examining data/libavif-0.8.3/src/reformat_libyuv.c Examining data/libavif-0.8.3/src/stream.c Examining data/libavif-0.8.3/src/utils.c Examining data/libavif-0.8.3/src/write.c Examining data/libavif-0.8.3/tests/aviftest.c Examining data/libavif-0.8.3/tests/avifyuv.c Examining data/libavif-0.8.3/tests/cJSON.c Examining data/libavif-0.8.3/tests/cJSON.h Examining data/libavif-0.8.3/tests/compare.c Examining data/libavif-0.8.3/tests/compare.h Examining data/libavif-0.8.3/tests/oss-fuzz/avif_decode_fuzzer.cc Examining data/libavif-0.8.3/tests/testcase.c Examining data/libavif-0.8.3/tests/testcase.h FINAL RESULTS: data/libavif-0.8.3/tests/aviftest.c:336:5: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(ioDir, dataDir); data/libavif-0.8.3/tests/aviftest.c:337:5: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). strcat(ioDir, ioSuffix); data/libavif-0.8.3/tests/aviftest.c:353:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(fullFilename, ioDir); data/libavif-0.8.3/tests/aviftest.c:354:9: [4] (buffer) strcat: Does not check for buffer overflows when concatenating to destination [MS-banned] (CWE-120). Consider using strcat_s, strncat, strlcat, or snprintf (warning: strncat is easily misused). strcat(fullFilename, filename); data/libavif-0.8.3/tests/cJSON.c:406:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(object->valuestring, valuestring); data/libavif-0.8.3/tests/testcase.c:78:9: [4] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). strcpy(basenameBuffer, tc->inputFilename); data/libavif-0.8.3/apps/avifdec.c:128:30: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). requestedDepth = atoi(arg); data/libavif-0.8.3/apps/avifdec.c:135:27: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). jpegQuality = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:132:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buffer[128]; data/libavif-0.8.3/apps/avifenc.c:139:23: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). cicp[index] = atoi(token); data/libavif-0.8.3/apps/avifenc.c:157:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char buffer[128]; data/libavif-0.8.3/apps/avifenc.c:164:35: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). output[index] = (uint32_t)atoi(token); data/libavif-0.8.3/apps/avifenc.c:240:16: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE * f = fopen(filename, "rb"); data/libavif-0.8.3/apps/avifenc.c:330:20: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). jobs = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:341:36: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). input.requestedDepth = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:364:32: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). keyframeInterval = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:367:28: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). minQuantizer = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:376:28: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). maxQuantizer = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:385:33: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). minQuantizerAlpha = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:394:33: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). maxQuantizerAlpha = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:403:28: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). tileRowsLog2 = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:412:28: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). tileColsLog2 = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:446:25: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). speed = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:477:24: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). duration = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:485:25: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). timescale = atoi(arg); data/libavif-0.8.3/apps/avifenc.c:540:34: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). irotAngle = (uint8_t)atoi(arg); data/libavif-0.8.3/apps/avifenc.c:548:33: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). imirAxis = (uint8_t)atoi(arg); data/libavif-0.8.3/apps/avifenc.c:869:16: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE * f = fopen(outputFilename, "wb"); data/libavif-0.8.3/apps/shared/avifjpeg.c:50:16: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE * f = fopen(inputFilename, "rb"); data/libavif-0.8.3/apps/shared/avifjpeg.c:94:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(pixelRow, buffer[0], rgb.rowBytes); data/libavif-0.8.3/apps/shared/avifjpeg.c:136:9: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). f = fopen(outputFilename, "wb"); data/libavif-0.8.3/apps/shared/avifpng.c:36:16: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE * f = fopen(inputFilename, "rb"); data/libavif-0.8.3/apps/shared/avifpng.c:187:9: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). f = fopen(outputFilename, "wb"); data/libavif-0.8.3/apps/shared/avifutil.c:56:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char codecVersions[256]; data/libavif-0.8.3/apps/shared/avifutil.c:78:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char lowercaseExt[8]; // This only needs to fit up to "jpeg", so this is plenty data/libavif-0.8.3/apps/shared/iccjpeg.c:175:3: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char marker_present[MAX_SEQ_NO+1]; /* 1 if marker found */ data/libavif-0.8.3/apps/shared/y4m.c:186:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&frame, *iter, sizeof(struct y4mFrameIterator)); data/libavif-0.8.3/apps/shared/y4m.c:191:31: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). frame.inputFile = fopen(inputFilename, "rb"); data/libavif-0.8.3/apps/shared/y4m.c:220:9: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char tmpBuffer[32]; data/libavif-0.8.3/apps/shared/y4m.c:225:35: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). frame.width = atoi((const char *)p + 1); data/libavif-0.8.3/apps/shared/y4m.c:228:36: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). frame.height = atoi((const char *)p + 1); data/libavif-0.8.3/apps/shared/y4m.c:341:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(*iter, &frame, sizeof(struct y4mFrameIterator)); data/libavif-0.8.3/apps/shared/y4m.c:444:16: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE * f = fopen(outputFilename, "wb"); data/libavif-0.8.3/examples/avif_example_decode_memory.c:29:9: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). f = fopen(inputFilename, "rb"); data/libavif-0.8.3/examples/avif_example_decode_streaming.c:137:9: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). f = fopen(inputFilename, "rb"); data/libavif-0.8.3/examples/avif_example_encode.c:101:16: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE * f = fopen(outputFilename, "wb"); data/libavif-0.8.3/include/avif/avif.h:61:24: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. void avifCodecVersions(char outBuffer[256]); data/libavif-0.8.3/include/avif/internal.h:185:23: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). avifCodecOpenFunc open; data/libavif-0.8.3/src/avif.c:149:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&dstImage->imir, &srcImage->imir, sizeof(dstImage->pasp)); data/libavif-0.8.3/src/avif.c:177:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dstRow, srcRow, dstImage->yuvRowBytes[yuvPlane]); data/libavif-0.8.3/src/avif.c:187:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dstAlphaRow, srcAlphaRow, dstImage->alphaRowBytes); data/libavif-0.8.3/src/avif.c:390:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dup, str, len + 1); data/libavif-0.8.3/src/avif.c:547:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(*writePos, appendStr, appendLen); data/libavif-0.8.3/src/avif.c:553:24: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. void avifCodecVersions(char outBuffer[256]) data/libavif-0.8.3/src/codec_aom.c:556:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dstAlphaRow, srcAlphaRow, image->alphaRowBytes); data/libavif-0.8.3/src/codec_aom.c:574:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dstRow, srcRow, image->yuvRowBytes[yuvPlane]); data/libavif-0.8.3/src/codec_rav1e.c:32:24: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). int majorVersion = atoi(rav1eVersionString); data/libavif-0.8.3/src/codec_rav1e.c:46:24: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). int minorVersion = atoi(minorVersionString); data/libavif-0.8.3/src/colr.c:34:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(outPrimaries, avifColorPrimariesTables[i].primaries, sizeof(avifColorPrimariesTables[i].primaries)); data/libavif-0.8.3/src/colr.c:40:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(outPrimaries, avifColorPrimariesTables[0].primaries, sizeof(avifColorPrimariesTables[0].primaries)); data/libavif-0.8.3/src/io.c:135:16: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE * f = fopen(filename, "rb"); data/libavif-0.8.3/src/rawdata.c:17:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(raw->data, old, bytesToCopy); data/libavif-0.8.3/src/rawdata.c:27:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(raw->data, data, len); data/libavif-0.8.3/src/read.c:58:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char auxType[AUXTYPE_SIZE]; data/libavif-0.8.3/src/read.c:64:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char contentType[CONTENTTYPE_SIZE]; data/libavif-0.8.3/src/read.c:632:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(outData, &item->mergedExtents, sizeof(avifROData)); data/libavif-0.8.3/src/read.c:720:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&item->mergedExtents, &offsetBuffer, sizeof(avifRWData)); data/libavif-0.8.3/src/read.c:723:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(front, offsetBuffer.data, bytesToRead); data/libavif-0.8.3/src/read.c:796:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dstProp, srcProp, sizeof(avifProperty)); data/libavif-0.8.3/src/read.c:925:21: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dst, src, yaRowBytes); data/libavif-0.8.3/src/read.c:933:21: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dst, src, yaRowBytes); data/libavif-0.8.3/src/read.c:949:21: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dstU, srcU, uvRowBytes); data/libavif-0.8.3/src/read.c:954:21: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dstV, srcV, uvRowBytes); data/libavif-0.8.3/src/read.c:1337:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(prop->type, header.type, 4); data/libavif-0.8.3/src/read.c:1441:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(dstProp, srcProp, sizeof(avifProperty)); data/libavif-0.8.3/src/read.c:1550:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(item->type, itemType, sizeof(itemType)); data/libavif-0.8.3/src/read.c:1551:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&item->contentType, &contentType, sizeof(contentType)); data/libavif-0.8.3/src/read.c:2256:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&sample->data, &itemContents, sizeof(avifROData)); data/libavif-0.8.3/src/read.c:2282:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&sample->data, &sampleContents, sizeof(avifROData)); data/libavif-0.8.3/src/read.c:2336:27: [2] (misc) open: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). if (!tile->codec->open(tile->codec)) { data/libavif-0.8.3/src/read.c:2669:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&decoder->image->pasp, &paspProp->u.pasp, sizeof(avifPixelAspectRatioBox)); data/libavif-0.8.3/src/read.c:2674:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&decoder->image->clap, &clapProp->u.clap, sizeof(avifCleanApertureBox)); data/libavif-0.8.3/src/read.c:2679:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&decoder->image->irot, &irotProp->u.irot, sizeof(avifImageRotation)); data/libavif-0.8.3/src/read.c:2684:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&decoder->image->imir, &imirProp->u.imir, sizeof(avifImageMirror)); data/libavif-0.8.3/src/read.c:2880:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(outTiming, &decoder->imageTiming, sizeof(avifImageTiming)); data/libavif-0.8.3/src/stream.c:61:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(data, stream->raw->data + stream->offset, size); data/libavif-0.8.3/src/stream.c:140:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(output, streamString, stringLen); data/libavif-0.8.3/src/stream.c:252:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(stream->raw->data + stream->offset, data, size); data/libavif-0.8.3/src/stream.c:272:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(stream->raw->data + stream->offset, &noSize, sizeof(uint32_t)); data/libavif-0.8.3/src/stream.c:273:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(stream->raw->data + stream->offset + 4, type, 4); data/libavif-0.8.3/src/stream.c:293:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(stream->raw->data + marker, &noSize, sizeof(uint32_t)); data/libavif-0.8.3/src/stream.c:300:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(stream->raw->data + stream->offset, &v, size); data/libavif-0.8.3/src/stream.c:309:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(stream->raw->data + stream->offset, &v, size); data/libavif-0.8.3/src/stream.c:318:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(stream->raw->data + stream->offset, &v, size); data/libavif-0.8.3/src/stream.c:327:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(stream->raw->data + stream->offset, &v, size); data/libavif-0.8.3/src/utils.c:22:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&result, data, sizeof(uint16_t)); data/libavif-0.8.3/src/utils.c:42:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&result, data, sizeof(uint32_t)); data/libavif-0.8.3/src/utils.c:66:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&result, data, sizeof(uint64_t)); data/libavif-0.8.3/src/utils.c:99:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(arr->ptr, oldPtr, oldByteCount); data/libavif-0.8.3/src/utils.c:118:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(newElement, element, arr->elementSize); data/libavif-0.8.3/src/write.c:441:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(exifItem->metadataPayload.data, &exifTiffHeaderOffset, sizeof(uint32_t)); data/libavif-0.8.3/src/write.c:442:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(exifItem->metadataPayload.data + sizeof(uint32_t), image->exif.data, image->exif.size); data/libavif-0.8.3/src/write.c:531:17: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(&item->av1C, &sequenceHeader.av1C, sizeof(avifCodecConfigurationBox)); data/libavif-0.8.3/tests/aviftest.c:39:13: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char filenameBuffer[2048]; data/libavif-0.8.3/tests/aviftest.c:155:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char testJSONFilename[2048]; data/libavif-0.8.3/tests/aviftest.c:158:16: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE * f = fopen(testJSONFilename, "wb"); data/libavif-0.8.3/tests/aviftest.c:179:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char testJSONFilename[2048]; data/libavif-0.8.3/tests/aviftest.c:182:16: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE * f = fopen(testJSONFilename, "rb"); data/libavif-0.8.3/tests/aviftest.c:328:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char ioDir[FILENAME_MAX_LENGTH + 1]; data/libavif-0.8.3/tests/aviftest.c:347:9: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char fullFilename[FILENAME_MAX_LENGTH + 1]; data/libavif-0.8.3/tests/aviftest.c:356:20: [2] (misc) fopen: Check when opening files - can an attacker redirect it (via symlinks), force the opening of special file type (e.g., device files), move things around to create a race condition, control its ancestors, or change its contents? (CWE-362). FILE * f = fopen(fullFilename, "rb"); data/libavif-0.8.3/tests/aviftest.c:478:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char codecVersions[256]; data/libavif-0.8.3/tests/avifyuv.c:69:24: [2] (integer) atoi: Unless checked, the resulting number can exceed the expected range (CWE-190). If source untrusted, check both minimum and maximum, even if the input had no minus sign (large numbers can roll over into negative number; consider saving to an unsigned value if that is intended). mode = atoi(arg); data/libavif-0.8.3/tests/cJSON.c:122:12: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. static char version[15]; data/libavif-0.8.3/tests/cJSON.c:123:5: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf(version, "%i.%i.%i", CJSON_VERSION_MAJOR, CJSON_VERSION_MINOR, CJSON_VERSION_PATCH); data/libavif-0.8.3/tests/cJSON.c:200:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(copy, string, length); data/libavif-0.8.3/tests/cJSON.c:305:14: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. unsigned char number_c_string[64]; data/libavif-0.8.3/tests/cJSON.c:512:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(newbuffer, p->buffer, p->offset + 1); data/libavif-0.8.3/tests/cJSON.c:549:14: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. unsigned char number_buffer[26] = {0}; /* temporary buffer to print the number into */ data/libavif-0.8.3/tests/cJSON.c:561:18: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. length = sprintf((char*)number_buffer, "null"); data/libavif-0.8.3/tests/cJSON.c:566:18: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. length = sprintf((char*)number_buffer, "%1.15g", d); data/libavif-0.8.3/tests/cJSON.c:572:22: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. length = sprintf((char*)number_buffer, "%1.17g", d); data/libavif-0.8.3/tests/cJSON.c:918:9: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. strcpy((char*)output, "\"\""); data/libavif-0.8.3/tests/cJSON.c:959:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(output + 1, input, output_length); data/libavif-0.8.3/tests/cJSON.c:1005:21: [2] (buffer) sprintf: Does not check for buffer overflows (CWE-120). Use sprintf_s, snprintf, or vsnprintf. Risk is low because the source has a constant maximum length. sprintf((char*)output_pointer, "u%04x", *input_pointer); data/libavif-0.8.3/tests/cJSON.c:1222:9: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(printed, buffer->buffer, cjson_min(buffer->length, buffer->offset + 1)); data/libavif-0.8.3/tests/cJSON.c:1378:13: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. strcpy((char*)output, "null"); data/libavif-0.8.3/tests/cJSON.c:1387:13: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. strcpy((char*)output, "false"); data/libavif-0.8.3/tests/cJSON.c:1396:13: [2] (buffer) strcpy: Does not check for buffer overflows when copying to destination [MS-banned] (CWE-120). Consider using snprintf, strcpy_s, or strlcpy (warning: strncpy easily misused). Risk is low because the source is a constant string. strcpy((char*)output, "true"); data/libavif-0.8.3/tests/cJSON.c:1416:13: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(output, item->valuestring, raw_length); data/libavif-0.8.3/tests/cJSON.c:1935:5: [2] (buffer) memcpy: Does not check for buffer overflows when copying to destination (CWE-120). Make sure destination can always hold the source data. memcpy(reference, item, sizeof(cJSON)); data/libavif-0.8.3/tests/testcase.c:76:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char basenameBuffer[1024]; data/libavif-0.8.3/tests/testcase.c:87:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char nameBuffer[1024]; data/libavif-0.8.3/tests/testcase.c:205:5: [2] (buffer) char: Statically-sized arrays can be improperly restricted, leading to potential overflows or other issues (CWE-119!/CWE-120). Perform bounds checking, use functions that limit length, or ensure that the size is larger than the maximum possible length. char y4mFilename[2048]; data/libavif-0.8.3/apps/avifenc.c:133:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(buffer, arg, 127); data/libavif-0.8.3/apps/avifenc.c:158:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(buffer, arg, 127); data/libavif-0.8.3/apps/avifenc.c:178:16: [1] (buffer) fgetc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ungetc(fgetc(stdin), stdin); // Kick stdin to force EOF data/libavif-0.8.3/apps/shared/avifutil.c:79:31: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). const size_t fileExtLen = strlen(fileExt); data/libavif-0.8.3/apps/shared/y4m.c:130:5: [1] (buffer) strncpy: Easily used incorrectly; doesn't always \0-terminate or check for invalid pointers [MS-banned] (CWE-120). strncpy(out, (const char *)p, formatLen); data/libavif-0.8.3/apps/shared/y4m.c:336:20: [1] (buffer) fgetc: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). ungetc(fgetc(frame.inputFile), frame.inputFile); // Kick frame.inputFile to force EOF data/libavif-0.8.3/include/avif/avif.h:565:20: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). avifIOReadFunc read; data/libavif-0.8.3/src/avif.c:388:18: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t len = strlen(str); data/libavif-0.8.3/src/avif.c:542:24: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t appendLen = strlen(appendStr); data/libavif-0.8.3/src/read.c:710:41: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). avifResult readResult = io->read(io, 0, extent->offset, bytesToRead, &offsetBuffer); data/libavif-0.8.3/src/read.c:2074:35: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). readResult = decoder->io->read(decoder->io, 0, parseOffset, 32, &headerContents); data/libavif-0.8.3/src/read.c:2096:39: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). readResult = decoder->io->read(decoder->io, 0, parseOffset, header.size, &boxContents); data/libavif-0.8.3/src/read.c:2271:50: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). avifResult readResult = decoder->io->read(decoder->io, 0, sample->offset, bytesToRead, &sampleContents); data/libavif-0.8.3/src/read.c:2293:39: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if (!decoder->io || !decoder->io->read) { data/libavif-0.8.3/src/read.c:2746:39: [1] (buffer) read: Check buffer boundaries if used in a loop including recursive loops (CWE-120, CWE-20). if (!decoder->io || !decoder->io->read) { data/libavif-0.8.3/src/stream.c:132:24: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t stringLen = strlen(streamString); data/libavif-0.8.3/tests/aviftest.c:329:25: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t dataDirLen = strlen(dataDir); data/libavif-0.8.3/tests/aviftest.c:330:26: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t ioSuffixLen = strlen(ioSuffix); data/libavif-0.8.3/tests/aviftest.c:338:23: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t ioDirLen = strlen(ioDir); data/libavif-0.8.3/tests/aviftest.c:348:30: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). size_t filenameLen = strlen(filename); data/libavif-0.8.3/tests/cJSON.c:194:14: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). length = strlen((const char*)string) + sizeof(""); data/libavif-0.8.3/tests/cJSON.c:404:9: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (strlen(valuestring) <= strlen(object->valuestring)) data/libavif-0.8.3/tests/cJSON.c:404:32: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). if (strlen(valuestring) <= strlen(object->valuestring)) data/libavif-0.8.3/tests/cJSON.c:532:23: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). buffer->offset += strlen((const char*)buffer_pointer); data/libavif-0.8.3/tests/cJSON.c:1083:21: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). buffer_length = strlen(value) + sizeof(""); data/libavif-0.8.3/tests/cJSON.c:1410:26: [1] (buffer) strlen: Does not handle strings that are not \0-terminated; if given one it may perform an over-read (it could cause a crash if unprotected) (CWE-126). raw_length = strlen(item->valuestring) + sizeof(""); ANALYSIS SUMMARY: Hits = 160 Lines analyzed = 19047 in approximately 0.56 seconds (33872 lines/second) Physical Source Lines of Code (SLOC) = 14735 Hits@level = [0] 274 [1] 26 [2] 128 [3] 0 [4] 6 [5] 0 Hits@level+ = [0+] 434 [1+] 160 [2+] 134 [3+] 6 [4+] 6 [5+] 0 Hits/KSLOC@level+ = [0+] 29.4537 [1+] 10.8585 [2+] 9.09399 [3+] 0.407194 [4+] 0.407194 [5+] 0 Dot directories skipped = 2 (--followdotdir overrides) Minimum risk level = 1 Not every hit is necessarily a security vulnerability. There may be other security vulnerabilities; review your code! See 'Secure Programming HOWTO' (https://dwheeler.com/secure-programs) for more information.