From fee4142425d99079e914fc2e50155440acb57094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Fri, 19 Nov 2021 12:32:07 +0100 Subject: [PATCH] libogg: Update to upstream 1.3.5 Mostly a cosmetic update, we were already on a commit close to what ended up being tagged as 1.3.5. Adds an extra buffer overflow fix. (cherry picked from commit 77efd406bfde63f2d0ac2077dfbec48a75bb1e22) --- thirdparty/README.md | 6 +++--- thirdparty/libogg/framing.c | 9 +++++++-- thirdparty/libogg/ogg/config_types.h | 15 ++++++++++++++- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/thirdparty/README.md b/thirdparty/README.md index 87e9b666009..a1002d54114 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -153,14 +153,14 @@ Files extracted from upstream source: ## libogg - Upstream: https://www.xiph.org/ogg -- Version: git (c8fca6b4a02d695b1ceea39b330d4406001c03ed, 2019) +- Version: 1.3.5 (e1774cd77f471443541596e09078e78fdc342e4f, 2021) - License: BSD-3-Clause Files extracted from upstream source: - `src/*.{c,h}` -- `include/ogg/*.h` in ogg/ -- COPYING +- `include/ogg/*.h` in `ogg/` (run `configure` to generate `config_types.h`) +- `COPYING` ## libpng diff --git a/thirdparty/libogg/framing.c b/thirdparty/libogg/framing.c index 83601199ad8..724d116d7f0 100644 --- a/thirdparty/libogg/framing.c +++ b/thirdparty/libogg/framing.c @@ -597,9 +597,14 @@ char *ogg_sync_buffer(ogg_sync_state *oy, long size){ if(size>oy->storage-oy->fill){ /* We need to extend the internal buffer */ - long newsize=size+oy->fill+4096; /* an extra page to be nice */ + long newsize; void *ret; + if(size>INT_MAX-4096-oy->fill){ + ogg_sync_clear(oy); + return NULL; + } + newsize=size+oy->fill+4096; /* an extra page to be nice */ if(oy->data) ret=_ogg_realloc(oy->data,newsize); else @@ -1564,7 +1569,7 @@ void test_pack(const int *pl, const int **headers, int byteskip, byteskipcount=byteskip; } - ogg_sync_wrote(&oy,next-buf); + ogg_sync_wrote(&oy,(long)(next-buf)); while(1){ int ret=ogg_sync_pageout(&oy,&og_de); diff --git a/thirdparty/libogg/ogg/config_types.h b/thirdparty/libogg/ogg/config_types.h index 3574a8ad448..1a87df64234 100644 --- a/thirdparty/libogg/ogg/config_types.h +++ b/thirdparty/libogg/ogg/config_types.h @@ -1,7 +1,20 @@ #ifndef __CONFIG_TYPES_H__ #define __CONFIG_TYPES_H__ -#include "core/int_types.h" +/* these are filled in by configure or cmake*/ +#define INCLUDE_INTTYPES_H 1 +#define INCLUDE_STDINT_H 1 +#define INCLUDE_SYS_TYPES_H 1 + +#if INCLUDE_INTTYPES_H +# include +#endif +#if INCLUDE_STDINT_H +# include +#endif +#if INCLUDE_SYS_TYPES_H +# include +#endif typedef int16_t ogg_int16_t; typedef uint16_t ogg_uint16_t;