Commit Graph

4159 Commits

Author SHA1 Message Date
Ralph Giles a2be4d2aed gitlab ci: Install pandoc dep
This is needed to generate the manpages for the `distcheck` target.
2022-09-22 13:54:05 -07:00
Martijn van Beurden b6fbd6b3d9
Release FLAC 1.4.1 2022-09-22 12:02:59 +02:00
Martijn van Beurden a076395de0
[CMake] Create dir for pandoc generation 2022-09-22 06:46:03 +02:00
Martijn van Beurden 8e50d89a40
[CMake] C flags were set while CXX flags were meant 2022-09-21 22:06:33 +02:00
Martijn van Beurden 3f4ba7620c Change C++ style comments to C style in headers 2022-09-20 19:54:32 +02:00
Martijn van Beurden 87c3d8a0d9 Fix a lot of Doxygen errors and add some documentation 2022-09-20 19:54:32 +02:00
Martijn van Beurden 89a1620c42 Update API and tool docs 2022-09-20 19:54:32 +02:00
Martijn van Beurden c65713b340 Define WINAPI_FAMILY stuff on platforms that do not provide them 2022-09-20 11:51:05 +02:00
Steve Lhomme 7dfcd73350 don't call GetFileInformationByHandle on Universal Windows Platform builds
It cannot be called:
https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfileinformationbyhandle

We can get the same information with GetFileInformationByHandleEx(FileIdInfo):
https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getfileinformationbyhandleex
2022-09-20 11:51:05 +02:00
Steve Lhomme ebf02df10d don't call CreateFileW on Universal Windows Platform builds
It cannot be called:
https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilew

There is CreateFile2 which is very similar:
https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfile2
2022-09-20 11:51:05 +02:00
Steve Lhomme 020f5c3805 disable console using on Universal Windows Platform builds
There's no support for the console. These functions cannot be used

* GetStdHandle(): https://learn.microsoft.com/en-us/windows/console/getstdhandle
* GetConsoleScreenBufferInfo(): https://learn.microsoft.com/en-us/windows/console/getconsolescreenbufferinfo
* WriteConsoleW(): https://learn.microsoft.com/en-us/windows/console/writeconsole

Instead send logs to the debug output
2022-09-20 11:51:05 +02:00
Martijn van Beurden 71e23ab6b8 Remove added empty line 2022-09-20 08:19:31 +02:00
Ozkan Sezer eadf2a6471 stream_decoder.c: move sys/stat.h include after sys/types.h. 2022-09-20 08:19:31 +02:00
Johannes Kauffmann e603c26db2 getopt: avoid K&R function definitions
This avoids warnings on clang-16 such as:

getopt/getopt.c:315:1: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]
exchange (argv)
^
2022-09-20 08:19:18 +02:00
Martijn van Beurden b175971f80
Include api dir in distribution
Also, don't create empty Doxygen tag and api directory
2022-09-18 20:09:48 +02:00
Martijn van Beurden de058537cf
Update .travis.yml
Similar to commit 1839370
2022-09-18 18:50:44 +02:00
Martijn van Beurden 71c3c55dba
Do not make empty man pages, use either pandoc or prebuild (#440)
* Do not make empty man pages, use either pandoc or prebuild

A check is added to configure whether flac.1 and metaflac.1
are already build when pandoc is not available. This is the
case in for example dist packages

* Fix typo in new automake conditional
2022-09-18 10:11:47 +02:00
Martijn van Beurden 1c0eea679a
[CMake] Prepend compiler flags, fix Clang compiler warnings
Because of issue https://github.com/xiph/flac/issues/437 compiler
flags are prepended instead of appended, so the user can override
them without altering the CMakeLists.txt.

Also, Clang doesn't support per-function optimize options, so in
CMake the fma file gets that option per-file. This is not supported
by automake.
2022-09-17 09:20:15 +02:00
Martijn van Beurden 526b28a95e
Warn user when encoding to stdout that checksum isn't written (#445)
Fixes https://github.com/xiph/flac/issues/428
2022-09-16 20:49:27 +02:00
Martijn van Beurden 1cb364d8cf
Make sure git doesn't try to get version from other repository
Fixes https://github.com/xiph/flac/issues/443
2022-09-16 13:59:21 +02:00
Martijn van Beurden 1a84604b2b
Remove __MSVCRT_VERSION__=0x0601 from configure.ac
This does not seem to be necessary anymore, is not used in CMake
and inhibits building against UWP and UCRT with MinGW
2022-09-15 16:07:29 +02:00
Martijn van Beurden 1839370cca [CI] Set INSTALL_MANPAGES=OFF 2022-09-15 09:49:53 +02:00
Martijn van Beurden 6fcee44e02 [CMake] Make building of man pages possible
This mirrors https://github.com/xiph/flac/pull/440
and fixes https://gitlab.xiph.org/xiph/flac/-/issues/2
2022-09-15 09:49:53 +02:00
Tomasz Kłoczko e8c23bf75e install cmake module in default cmake search path
cmake uses $(datadir}/cmake and $(libdir}/cmake as base path to
search for its moduels. Install FLAC cmake module in
$(libdir}/cmake/FLAC because it provides arch dependent API/ABI.

Signed-off-by: Tomasz Kłoczko <kloczek@github.com>
2022-09-15 09:49:53 +02:00
Tomasz Kłoczko 4145f7455b Fix man pages lvl 1 install path
Install those pages in "${CMAKE_INSTALL_MANDIR}/man1 instead directly in
"${CMAKE_INSTALL_MANDIR}.

Signed-off-by: Tomasz Kłoczko <kloczek@github.com>
2022-09-15 09:49:53 +02:00
Martijn van Beurden 97dbae1800
Fix endianness display in endswap test (cosmetic issue)
As CPU_IS_LITTLE_ENDIAN is used nowehere except in test_libflac,
switch to CPU_IS_BIG_ENDIAN instead, which is actually used in the
code at several places. CMake didn't set the former but does set
the latter.
2022-09-15 07:17:18 +02:00
Martijn van Beurden 229f4f45df
Remove assert that is no longer true
This was never strictly true, but the assert fired in normal use
since commit a2c8ae5
2022-09-14 21:56:45 +02:00
Jörn Heusipp 13bba4462b Fix wrong format string specifier.
Fixes https://github.com/xiph/flac/issues/433
2022-09-14 20:17:53 +02:00
Martijn van Beurden a1b7fa78a8
Remove unused release script 2022-09-14 08:24:32 +02:00
Martijn van Beurden 2ab4677750
Release FLAC 1.4.0 2022-09-09 14:08:42 +02:00
Martijn van Beurden 35303458f0
Fix make check on MinGW when building shared library 2022-09-07 09:57:18 +02:00
Martijn van Beurden f1e26d4813
Update CHANGELOG.md and AUTHORS 2022-09-05 21:33:29 +02:00
Martijn van Beurden dd8a264c56
Restructure README, API and HTML documentation
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.
2022-09-05 19:11:31 +02:00
Martijn van Beurden 5e67c6278e
[CI] Add Windows build with shared libs 2022-09-04 15:23:12 +02:00
Martijn van Beurden 5d1402eae3
fuzzer: Do not add corrupt vorbiscomment metadata block
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50509
Credit: Oss-Fuzz
2022-08-31 07:10:20 +02:00
Martijn van Beurden a6de25bbb6
Update ABI check 2022-08-30 22:01:11 +02:00
Martijn van Beurden dc12a9e2f6
Add struct tag to FLAC__StreamMetadata (#416) 2022-08-29 20:35:19 +02:00
Martijn van Beurden 0bf7282f58
Protect window functions from NaN
Credit: oss-fuzz
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47747
2022-08-23 19:40:35 +02:00
Martijn van Beurden cd031fb7a9
Add ABI check to CI
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
2022-08-22 16:07:25 +02:00
Martijn van Beurden c90b3ea3c0 Fix integer overflow in seeking code
This issue popped up in ci-fuzz, unrelated to the PR itself.
2022-08-20 16:03:53 +02:00
Martijn van Beurden 5bc582b2c7 Fix some OOM metadata bugs, disable OOM checking in metadata fuzzing
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
2022-08-20 16:03:53 +02:00
Martijn van Beurden 1f21ae2702 Add write callback abort check to seeking fuzzer
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
2022-08-20 16:03:53 +02:00
Martijn van Beurden 3ce4475451 Don't overwrite bad state with seek error
In case memory allocation fails or decoding is aborted during
seeking, do not overwrite these states with a seek error
2022-08-20 16:03:53 +02:00
Martijn van Beurden 70e63b03ec Throw memory allocation error when side subframe allocation fails 2022-08-20 16:03:53 +02:00
Martijn van Beurden a2c8ae599e Move entropy partitioning result allocation so it can be checked
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
2022-08-20 16:03:53 +02:00
Martijn van Beurden c65483e2c2 Do not memset when allocation fails
Also remove some nearby unused code
2022-08-20 16:03:53 +02:00
Martijn van Beurden fbb6cb5c07 Add OOM checking to fuzzing 2022-08-20 16:03:53 +02:00
Martijn van Beurden 707dace4bd Leave metadata items untouched if resize function fails 2022-08-20 16:03:53 +02:00
Martijn van Beurden 21fe95ee82 Add and use _nofree variants of safe_realloc functions
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.
2022-08-20 16:03:53 +02:00
lutianxiong b715d7b9fe fix potential memleak 2022-08-20 16:03:53 +02:00