1. 22 Nov, 2019 1 commit
  2. 10 Dec, 2018 2 commits
    • Timothy B. Terriberry's avatar
      Fix to avoid technically undefined behavior. · 1bd200bc
      Timothy B. Terriberry authored
      The C standard says that calling library functions (including
       memcpy) with invalid arguments (including a NULL pointer) is
       undefined behavior unless otherwise noted (which memcpy doesn't).
      op_filter_read_native() invokes op_read_native() with NULL for the
       _pcm buffer, which triggers such a memcpy invocation.
      Even though it should be perfectly fine in practice to pass NULL to
       memcpy when copying zero bytes, don't do it.
      
      Thanks to a person who did not wish to be credited for the report.
      1bd200bc
    • Timothy B. Terriberry's avatar
      Fix seekability detection on win32. · 24cb5eae
      Timothy B. Terriberry authored
      The seeking functions on Windows internally dispatch to
       SetFilePointer(), whose behavior is undefined if you do not call
       it on "a file stored on a seeking device".
      Check the type of file when it is opened and manually force seeks
       to fail if we do not have such a file.
      
      Thanks to L W Anhonen for the report and Mark Harris for pointing
       out the solution used by opus-tools to avoid this problem.
      24cb5eae
  3. 06 Nov, 2018 1 commit
    • Timothy B. Terriberry's avatar
      Fix SEEK_END usage in seek implementations. · 34f945bb
      Timothy B. Terriberry authored
      When seeking using SEEK_END, the win32-specific implementation of
       op_fseek() would add the offset to the file size to get the
       absolute seek position.
      However, op_mem_seek() and op_http_stream_seek() would subtract the
       offset instead.
      The documentation of fseek() is not at all clear which behavior is
       correct, but I believe that the op_fseek() behavior is.
      
      This inconsistency didn't matter for opusfile in practice, because
       we only ever use SEEK_END with an offset of 0.
      However, the user can also open files with our API and use the
       resulting callbacks for their own purposes, so it would be good to
       be consistent for them.
      
      Thanks to a person who did not wish to be credited for the report.
      34f945bb
  4. 01 Nov, 2018 1 commit
    • Stefan Strogin's avatar
      http: use new API with LibreSSL >=2.7.0 · d2577d7f
      Stefan Strogin authored
      LibreSSL is not yet fully API compatible with OpenSSL 1.0.2 and later,
      However many APIs from OpenSSL 1.0.2 and 1.1 are already implemented in
      LibreSSL 2.7.0 and later. Old approach works in newer LibreSSL version
      as well, but it's not nice to force deprecated functions on LibreSSL
      users.
      
      Add additional conditionals for new LibreSSL versions to use the
      available new APIs.
      Signed-off-by: Ralph Giles's avatarRalph Giles <giles@thaumas.net>
      d2577d7f
  5. 01 Oct, 2018 1 commit
    • Stefan Strogin's avatar
      http: fix compilation with LibreSSL · d59a17ec
      Stefan Strogin authored
      LibreSSL defines OPENSSL_VERSION_NUMBER to 0x20000000L, but its API is
      compatible with OpenSSL 1.0.1.
      Therefore redefine OPENSSL_VERSION_NUMBER to 0x1000115fL (1.0.1u) if
      LibreSSL is used.
      
      Fixes: #2327
      d59a17ec
  6. 19 Sep, 2018 3 commits
  7. 18 Sep, 2018 1 commit
  8. 20 Aug, 2018 3 commits
  9. 12 Jun, 2018 3 commits
  10. 08 Jan, 2018 4 commits
  11. 29 Dec, 2017 1 commit
  12. 07 Dec, 2017 2 commits
  13. 14 Nov, 2017 2 commits
  14. 01 Nov, 2017 2 commits
    • Stephen's avatar
      Add macOS and clang builds to the travis config. · c286c605
      Stephen authored
      Improve coverage by building more variants in integration
      testing.
      
      There's no equivalent of the apt addon for macOS builds, so
      we put dependencies in Brewfile and call `brew bundle` to
      install them. This works better than calling `brew install`
      directly since the later will error if a package is already
      installed, and even if the error is ignored it won't update
      to the latest version available, resulting in binaried built
      against e.g. vulnerable versions of openssl.
      
      To avoid conflicts with Apple's deprecated openssl package,
      homebrew doesn't install its openssl package in the default
      search path, so we need to manually append the its location
      to PKG_CONFIG_PATH. We cannot build against Apple's package
      because while it provides libraries and an openssl.pc file,
      no headers are available.
      Signed-off-by: Ralph Giles's avatarRalph Giles <giles@thaumas.net>
      c286c605
    • Stephen's avatar
      Remove unneeded travis lines. · 440e26f6
      Stephen authored
      Ubuntu 14.04 (trusty) is the current default, so we don't need to specify.
      
      Using the apt addon means we no longer need sudo access.
      Signed-off-by: Ralph Giles's avatarRalph Giles <giles@thaumas.net>
      440e26f6
  15. 12 Sep, 2017 1 commit
  16. 02 Aug, 2017 8 commits
    • Ralph Giles's avatar
      mingw: Update to opus 1.2.1. · 2c239ebc
      Ralph Giles authored
      New release of the codec reference implementation.
      2c239ebc
    • Timothy B. Terriberry's avatar
      Minor win32 warning fix. · dc27cf17
      Timothy B. Terriberry authored
      op_fopen() and op_freopen() declare these arguments as non-NULL,
       so when building with mingw, the compiler reasonably complains
       when we check to see if they're NULL.
      We could remove the OP_ARG_NONNULL tags, but the behavior of
       _wopen/_wfreopen appears to be to crash on NULL for either
       parameter.
      On Linux, the behavior appears to be to handle a NULL path (fopen
       returns NULL with errno set to EFAULT, and freopen returns the
       passed FILE * with errno set to EFAULT), but crash on a NULL mode.
      Keeping the OP_ARG_NONNULL tags promises that passing NULL results
       in undefined behavior, which is at least consistent with the
       behavior being different on different platforms.
      It's also consistent with the ABI promises of previous releases,
       which compilers linking against libopusfile might have taken
       advantage of.
      dc27cf17
    • Ralph Giles's avatar
      Update soname for the opusfile 0.9 release. · d9bbf207
      Ralph Giles authored
      The return type of op_serialno changed from ogg_uint32
      to opus_uint32, but those types should be abi compatible.
      d9bbf207
    • Ralph Giles's avatar
      mingw: Update to opus 1.2. · 5f884d4f
      Ralph Giles authored
      New release of the codec reference implementation.
      5f884d4f
    • Ralph Giles's avatar
      mingw: Use an https url for downloading libogg. · d36aab71
      Ralph Giles authored
      downloads.xiph.org recently got https support.
      d36aab71
    • Ralph Giles's avatar
      Fix a formatting nit. · d45bd3bf
      Ralph Giles authored
      d45bd3bf
    • Thomas Daede's avatar
      Disable building latex documentation on ci. · e46f46a5
      Thomas Daede authored
      The documentation currently fails to build on Jenkins due to
      hyperref and doxygen not playing nicely with each other on
      Debian Stretch.
      e46f46a5
    • Timothy B. Terriberry's avatar
      Print a useful error when pkg-config is missing · 2521a7d8
      Timothy B. Terriberry authored
      Without this check, the PKG_CHECK_MODULES() macro remains
      unexpanded, which gives a syntax error when the shell reaches that
      point in the configure script, even for checks which are disabled
      (e.g., the OpenSSL check when using --disable-http).
      
      Instead, explicitly check for pkg-config and give the user useful
      advice on how to solve the problem if it's not found.
      
      Thanks to eXpl0it3r for reporting a problem for which installing
      pkg-config turned out to be the solution.
      2521a7d8
  17. 07 Jul, 2017 2 commits
    • Timothy B. Terriberry's avatar
      Improve source/stream terminology consistency · c59d42b6
      Timothy B. Terriberry authored
      We inherited the term "source" from vorbisfile's "datasource", but
       were using it interchangeably with stream.
      At least one user did not even realize the that the _source
       parameter passed to op_open_callbacks() was the same as the
       _stream parameter taken by those callbacks, which is reasonable
       because we never said so.
      Consistently use "stream" instead of "source" in both the
       documentation and the code.
      c59d42b6
    • Timothy B. Terriberry's avatar
      Minor documentation cross-reference. · 881a54da
      Timothy B. Terriberry authored
      Let people reading about the output_gain field know how to change
       the way it gets applied.
      881a54da
  18. 17 Jun, 2017 1 commit
  19. 07 Jun, 2017 1 commit
    • Ralph Giles's avatar
      Propogate openssl CFLAGS to the opusurl build. · 1fbe0cd1
      Ralph Giles authored
      We added DEPS_CFLAGS to the general build, but opusurl
      has an additional dependency on openssl. If the headers
      were outside the normal search path, configure could
      succeed but then the build would fail on http.c.
      
      We need to add URL_DEPS_CFLAGS to that specific target.
      1fbe0cd1