summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Release FLAC 1.4.01.4.0Martijn van Beurden2022-09-097-7/+7
|
* Fix make check on MinGW when building shared libraryMartijn van Beurden2022-09-072-3/+3
|
* Update CHANGELOG.md and AUTHORSMartijn van Beurden2022-09-052-10/+19
|
* Restructure README, API and HTML documentationMartijn van Beurden2022-09-0528-4075/+372
| | | | | | Tool documentation has moved to man directory, other dev docs to README.md and CONTRIBUTING.md. User documentation is already on the website and doesn't really belong in the source code. Also, fix CMake so that it uses Doxyfile.in instead of using defaults.
* [CI] Add Windows build with shared libsMartijn van Beurden2022-09-041-0/+5
|
* fuzzer: Do not add corrupt vorbiscomment metadata blockMartijn van Beurden2022-08-311-7/+16
| | | | Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50509 Credit: Oss-Fuzz
* Update ABI checkMartijn van Beurden2022-08-302-0/+0
|
* Add struct tag to FLAC__StreamMetadata (#416)Martijn van Beurden2022-08-291-1/+1
|
* Protect window functions from NaNMartijn van Beurden2022-08-231-3/+21
| | | | Credit: oss-fuzz Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47747
* Add ABI check to CI Martijn van Beurden2022-08-225-5/+37
| | | | | This adds a dump of current ABIs (which will probably be released as 1.4.0) to the test directory, and adds a comparison to current ABIs to the distcheck
* Fix integer overflow in seeking codeMartijn van Beurden2022-08-201-3/+4
| | | | This issue popped up in ci-fuzz, unrelated to the PR itself.
* Fix some OOM metadata bugs, disable OOM checking in metadata fuzzingMartijn van Beurden2022-08-204-17/+36
| | | | | | For now OOM emulation in fuzzer_metadata is disabled, as I really want to get as much merged as soon as possible. Need to get back to this at some point
* Add write callback abort check to seeking fuzzerMartijn van Beurden2022-08-201-1/+16
| | | | | | If the write callback calls for an abort, this must be honored. This commit adds a check to ascertain the write callback isn't called again
* Don't overwrite bad state with seek errorMartijn van Beurden2022-08-201-0/+5
| | | | | In case memory allocation fails or decoding is aborted during seeking, do not overwrite these states with a seek error
* Throw memory allocation error when side subframe allocation failsMartijn van Beurden2022-08-201-1/+6
|
* Move entropy partitioning result allocation so it can be checkedMartijn van Beurden2022-08-202-3/+22
| | | | | | | | For some reason realloc failing to allocate space to store the results of entropy partitioning was not handled at all. The realloc is moved to a spot where it is possible to set encoder state. This also moves it from deep within a loop to being called only occasionally
* Do not memset when allocation failsMartijn van Beurden2022-08-202-18/+12
| | | | Also remove some nearby unused code
* Add OOM checking to fuzzingMartijn van Beurden2022-08-206-19/+120
|
* Leave metadata items untouched if resize function failsMartijn van Beurden2022-08-203-16/+46
|
* Add and use _nofree variants of safe_realloc functionsMartijn van Beurden2022-08-207-11/+44
| | | | | | | | | | | | | | | | | Parts of the code use realloc like x = safe_realloc(x, somesize); when this is the case, the safe_realloc variant used must free the old memory block in case it fails, otherwise it will leak. However, there are also instances in the code where handling is different: if (0 == (x = safe_realloc(y, somesize))) return false in this case, y should not be freed, as y is not set to NULL we could encounter double frees. Here the safe_realloc_nofree functions are used.
* fix potential memleaklutianxiong2022-08-201-2/+6
|
* Introduce subdivide_tukey apodizationMartijn van Beurden2022-08-197-30/+172
| | | | | | | | | | | | | | | Subdivide_tukey is intended to replace partial_tukey and punchout_tukey. It works in rougly the same way, but uses a more efficient algorithm, recyling more data. subdivide_tukey has 2 arguments, of which 1 is optional. The first states the maximum number of parts the signal has to be split up in, the second is the tukey parameter, divided by the max num of parts. subdivide_tukey(3) analyses audio with an unsplit block, with the block split in 2 and split in 3. Here the default p of 0.5 applies to the smallest parts, so the unsplit block effectively has a p of 0.5/3. subdivide_tukey(3/2e-1) does the same but with p of 0.2.
* Prepare oom checking in fuzzingMartijn van Beurden2022-08-192-0/+3
| | | | By merging oom checking in fuzzing in steps, it is possible to implement it without having oss-fuzz build failures
* Add configure option to not build programsMartijn van Beurden2022-08-132-2/+10
|
* Remove really old --explain text and reflow to fit 80 charsMartijn van Beurden2022-08-101-25/+21
| | | | | There was some help text in `flac --explain` which hasn't been correct for about 20 years already. This is removed, the rest of the text is reflowed to fit 80 chars standard terminal width
* Convert docbook to markdownMartijn van Beurden2022-08-0913-3873/+1026
| | | | | | | | | Currently, the man pages are converted from a docbook document, but the conversion doesn't seem very reliable. Also, the man page is more-or-less duplicated by the html documentation. This commit moves all tool documentation to a markdown document which is readable by itself and can be converted by pandoc to a man page and can be used by Jekyll to populate the website.
* Move changelog to markdown and top directory, add changes in gitMartijn van Beurden2022-08-084-1646/+914
|
* Fix HAVE_GETAUXVAL check for FreeBSD (#410)pkubaj2022-08-071-1/+1
| | | FreeBSD doesn't have getauxval().
* Fix and warning for MSVC with Windows XP toolset (#399)Martijn van Beurden2022-08-062-1/+30
| | | | A warning and a small workaround is added for building libFLAC on MSVC with a specific Windows XP targeting toolset.
* [CMake] Don't search for libiconv and libintl on WindowsMartijn van Beurden2022-08-012-3/+7
| | | | | The functions these libs provide don't seem to be used on Windows anyway. This fixes https://github.com/xiph/flac/issues/249
* Fix decoding of 33 bps constant subframeMartijn van Beurden2022-07-311-3/+10
|
* Also add trailing nul to empty vorbis comment entriesMartijn van Beurden2022-07-283-19/+35
| | | | | | | This might fix https://github.com/xiph/flac/issues/48 I cannot check as I don't have a file to test with. Besides returning an empty string upon reading, also allocate empty strings when growing vorbiscomments
* Check for vorbis comment entry being not null in fuzzerMartijn van Beurden2022-07-281-7/+12
|
* Finish porting guideMartijn van Beurden2022-07-274-18/+59
|
* Add porting guide stubMartijn van Beurden2022-07-271-0/+50
|
* Bulk update copyright dates to 2022Martijn van Beurden2022-07-26271-292/+292
|
* Add FMA intrinsics for autocorrelation calculationMartijn van Beurden2022-07-257-9/+130
| | | See https://github.com/xiph/flac/pull/387 for details
* Include stddef.h in compat.hMartijn van Beurden2022-07-191-1/+3
| | | | | | | See https://github.com/xiph/flac/issues/76 for details Also, move include of stddef.h and stdarg.h up to top of file to make clear that they are included unconditionally
* Fix rolled up version of lpc_restore_signal_wideMartijn van Beurden2022-07-171-1/+1
| | | | This fixes https://github.com/xiph/flac/issues/393
* Improve tempfile generation of fuzzer_metadataMartijn van Beurden2022-07-161-13/+4
|
* Re-add check for block alignMartijn van Beurden2022-07-161-20/+4
| | | | | | | | In 2003, in commit 94f81b0, a check was added for the block align field in WAVE. If it contradicts other parts of the header, an error was raised. This was (probably erroneously) made inactive with #if 0 in commit 13c63e4. This commit reactivates the check and removes the rest of the inactivated code.
* Eliminate race conditions in fuzzer_metadata file accessMartijn van Beurden2022-07-151-20/+34
| | | | See https://github.com/google/oss-fuzz/issues/8006 for details
* Revert "Enable encoder to use INT32_MIN as residual value" (#389)Martijn van Beurden2022-07-137-112/+73
| | | | | | | This reverts commit 7e0a0e572305e9004a6fa9bba3dd6be936553b03, following the change to the FLAC format proposed here: https://github.com/ietf-wg-cellar/flac-specification/pull/148 It turns out supporting use of INT32_MIN is quite a hassle.
* Only search for backslash in filename on WindowsMartijn van Beurden2022-07-131-0/+2
|
* Check first metadata block is streaminfo in level 1 metadata iteratorMartijn van Beurden2022-07-071-1/+9
| | | | | | | | | In simple_iterator_prime_input_ there was no check whether the first metadata block is a streaminfo block. As the rest of the functions operate under the assumption the first block is a streaminfo block, for example to prevent the functions from deleting the last block and being left with an iterator pointing nowhere, this check is added.
* Check chain length Ogg FLAC fileMartijn van Beurden2022-07-071-0/+6
| | | | | | | When a metadata chain was read from an Ogg FLAC file containing no metadata (but otherwise valid), an empty chain could be returned, leading to null derefencing on trying to manipulate it. This commit adds a check for the chain length
* Fix dereferencing of null pointer in metadata_iterators.cMartijn van Beurden2022-07-071-20/+23
|
* Add limits to metadata readingMartijn van Beurden2022-07-071-0/+8
| | | | | | In commit 0077d3b checks were added for metadata reading in the stream decoder. However, the metadata interface suffers from the same problems. Similar to the mentioned commit, checks are added.
* Add fuzzer_metadataMartijn van Beurden2022-07-073-1/+494
|
* Enable encoder to use INT32_MIN as residual valueMartijn van Beurden2022-07-017-73/+112
| | | | | | As abs(INT32_MIN) is undefined, it took some extra work to enable the encoder to do this. While expected gains are zero, this is done to ensure full spec coverage in this regard