Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-06-30avutil/common: Fix integer overflow in av_ceil_log2_c()Michael Niedermayer
Fixes: left shift of 1913647649 by 1 places cannot be represented in type 'int' Fixes: 23572/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMALOSSLESS_fuzzer-5082619795734528 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-05-27Use gcc/clang builtins for av_sat_(add|sub)_64_c if available.Dale Curtis
Signed-off-by: Dale Curtis <dalecurtis@chromium.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-05-15avutil/common: Add saturated add/sub operations for int64_t.Dale Curtis
Many places are using their own custom code for handling overflow around timestamps or other int64_t values. There are enough of these now that having some common saturated math functions seems sound. Signed-off-by: Dale Curtis <dalecurtis@chromium.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-01-31avutil/common: warn about possible move of the data pointer after the last 0 ↵Marton Balint
byte in GET_UTF8 Signed-off-by: Marton Balint <cus@passwd.hu>
2020-01-31avutil/common: put ERROR statements into separate code blocks in GET_UTF8/16Marton Balint
To be able to safely use more than one statement in ERROR. Signed-off-by: Marton Balint <cus@passwd.hu>
2020-01-31avutil/common: add parenthesis around GET_16BIT in GET_UTF16Marton Balint
Signed-off-by: Marton Balint <cus@passwd.hu>
2020-01-31avutil/common: use unsigned int in GET_UTF8Marton Balint
Right shift of signed value is implementation defined. Signed-off-by: Marton Balint <cus@passwd.hu>
2019-10-06avutil/common: Fix underflow for ROUNDED_DIV with unsigned integerMengye Lv
When used ROUNDED_DIV(a,b), if a is unsigned integer zero, it's will lead to an underflow issue(it called unsigned integer wrapping). Fixes #8062 Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Mengye Lv <mengyelv@tencent.com> Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-09-18avutil/common: Fix undefined shiftAndreas Rheinhardt
av_mod_uintp2_c uses a bitwise AND with (1 << p) - 1 to clear the high bits of an unsigned int. But this is undefined if p == 31, because 1 is an int and 2^31 is not representable in an int. So make 1 unsigned. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-06-15avutil/common: Fix undefined behavior in av_clip_uintp2_c()Michael Niedermayer
Fixes: negation of -2147483648 cannot be represented in type 'int'; cast to an unsigned type to negate this value to itself Fixes: 8521/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DIRAC_fuzzer-5639024952737792 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-02-17avutil/common: Fix integer overflow in av_clip_uint8_c() and av_clip_uint16_c()Michael Niedermayer
Fixes: 5567/clusterfuzz-testcase-minimized-5769966247739392 Fixes: runtime error: negation of -2147483648 cannot be represented in type 'int'; cast to an unsigned type to negate this value to itself Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-12-04libavutil: Add saturating subtraction functionsAndrew D'Addesio
Add av_sat_sub32 and av_sat_dsub32 as the subtraction analogues to av_sat_add32/av_sat_dadd32. Also clarify the formulas for dadd32/dsub32. Signed-off-by: Andrew D'Addesio <modchipv12@gmail.com>
2016-01-27avutil: Rename FF_CEIL_COMPAT to AV_CEIL_COMPATDerek Buitenhuis
Libav, for some reason, merged this as a public API function. This will aid in future merges. A define is left for backwards compat, just in case some person used it, since it is in a public header. Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-01-15lavu: prevent overflow in av_clip_intp2_cAndreas Cadhalpun
This fixes ubsan runtime error: signed integer overflow: 8388608 + 2140274688 cannot be represented in type 'int' Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
2016-01-13avutil/common: Protect GET_BYTE in GET_UTF8() by ()Michael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-01-08lavu: rename and move ff_parity to av_parityJames Almer
av_popcount is not defined in intmath.h. Reviewed-by: ubitux Signed-off-by: James Almer <jamrial@gmail.com>
2016-01-08lavu/common: add an explanation to FF_CEIL_RSHIFT()Clément Bœsch
2016-01-08lavu/common: fix FF_CEIL_RSHIFT() range commentClément Bœsch
2016-01-02Merge commit '50078c1c8070dd8d1c329e8117ff30ec72489039'Hendrik Leppkes
* commit '50078c1c8070dd8d1c329e8117ff30ec72489039': libavutil: move FFALIGN macro from common.h to macros.h Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-12-14libavutil: move FFALIGN macro from common.h to macros.hJanne Grunau
Include macros.h explicitly in common.h so that external code using FFALIGN does not break. It was already implicitly included through version.h. Include macros.h in lls.h and internal.h for FFALIGN. lls.h was including common.h only for FFALIGN and internal.h was missing the include for FFALIGN. `make checkheaders` did not catch it because it's an internal header.
2015-11-15avutil: Move av_rint64_clip_* to internal.hMichael Niedermayer
The function is renamed to ff_rint64_clip() This should avoid build failures on VS2012 Feel free to changes this to a different solution Reviewed-by: James Almer <jamrial@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-11-14avutil/common: add av_rint64_clipGanesh Ajjanagadde
The rationale for this function is reflected in the documentation for it, and is copied here: Clip a double value into the long long amin-amax range. This function is needed because conversion of floating point to integers when it does not fit in the integer's representation does not necessarily saturate correctly (usually converted to a cvttsd2si on x86) which saturates numbers > INT64_MAX to INT64_MIN. The standard marks such conversions as undefined behavior, allowing this sort of mathematically bogus conversions. This provides a safe alternative that is slower obviously but assures safety and better mathematical behavior. API: @param a value to clip @param amin minimum value of the clip range @param amax maximum value of the clip range @return clipped value Note that a priori if one can guarantee from the calling side that the double is in range, it is safe to simply do an explicit/implicit cast, and that will be far faster. However, otherwise this function should be used. avutil minor version is bumped. Reviewed-by: Ronald S. Bultje <rsbultje@gmail.com> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-11-04avutil/common: add FFDIFFSIGN macroGanesh Ajjanagadde
This is of use for defining comparator callbacks. Common approaches like return x-y are not safe due to the risks of overflow. Furthermore, the (x > y) - (x < y) trick is optimized to branchless code. This also documents this macro accordingly. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
2015-09-05Merge commit 'cdfe45ad371b7a8e6135b6c063b6b2a93152cb3a'Hendrik Leppkes
* commit 'cdfe45ad371b7a8e6135b6c063b6b2a93152cb3a': lavu: Drop deprecated av_reverse function Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2015-09-03avutil/common: Add FFNABS()Michael Niedermayer
This macro avoids the undefined corner case with the *_MIN values Previous version Reviewed-by: Ganesh Ajjanagadde <gajjanag@mit.edu> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-09-03avutil/common: Document FFABS() corner caseMichael Niedermayer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2015-08-28lavu: Drop deprecated av_reverse functionVittorio Giovara
Deprecated in 10/2012.
2015-03-20libavutil: add av_mod_uintp2James Almer
Reviewed-by: Michael Niedermayer <michaelni@gmx.at> Signed-off-by: James Almer <jamrial@gmail.com>
2015-03-02avutil/common: minor simplification in av_clip_intp2_c()Michael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-25avutil/common: Fix integer overflow in av_clip_int8/16_cMichael Niedermayer
Fixes: signal_sigsegv_30420a5_2388_cov_1489993561_integra_lavf.mp4 Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-21Merge commit 'bf07d813f6c88b5a76980f321cf7272d799c4216'Michael Niedermayer
* commit 'bf07d813f6c88b5a76980f321cf7272d799c4216': libavutil: Add av_clip_intp2 Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-02-21libavutil: Add av_clip_intp2Peter Meerwald
there already is a function, av_clip_uintp2() that clips a signed integer to an unsigned power-of-two range, i.e. 0,2^p-1 this patch adds a function av_clip_intp2() that clips a signed integer to a signed power-of-two range, i.e. -(2^p),(2^p-1) the new function can be used as a special case for av_clip(), e.g. av_clip(x, -8192, 8191) can be rewritten as av_clip_intp2(x, 13) there are ARM instructions, usat and ssat resp., which map nicely to these functions (see next patch) Signed-off-by: Peter Meerwald <pmeerw@pmeerw.net> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2013-11-24Merge remote-tracking branch 'qatar/master'Michael Niedermayer
* qatar/master: Add missing #includes for *INT64_MAX and *INT64_C Conflicts: ffmpeg.c ffmpeg_filter.c ffplay.c libavformat/assdec.c libavformat/avidec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-24Add missing #includes for *INT64_MAX and *INT64_CDiego Biurrun
2013-11-06avutil/common: error out with clear message if __STDC_CONSTANT_MACROS is not ↵Michael Niedermayer
defined with c++ Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-04lavu/common: add warning to GET_UTF8 doxyStefano Sabatini
Should prevent wrong uses, or at least decrease their chance.
2013-08-27libavutil: cast truncated values to uint32_tAlfred E. Heggestad
programs using ffmpeg that are compiled with -Wshorten-64-to-32 gives a warning when using header files common.h and rational.h cast 64-bit truncated values to (uint32_t) to avoid the warning Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-13lavu/common: make FF_CEIL_RSHIFT faster when shift is constant.Clément Bœsch
See "[PATCH] lavfi/lut: use FF_CEIL_RSHIFT for chroma w/h rounding." thread for more information.
2013-05-09lavu: add FF_CEIL_RSHIFT and use it in various places.Clément Bœsch
2013-04-24lavu: fix GET_UTF8 macro.Nicolas George
Prevent 0xFE and 0xFF from being considered the start of non-standard 7-bytes sequences. No noticeable effect on speed.
2013-04-18lavu: add av_clipd_cPaul B Mahol
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-03-07Use the avstring.h locale-independent character type functionsReimar Döffinger
Make sure the behavior does not change with the locale. Signed-off-by: Martin Storsjö <martin@martin.st>
2013-03-04Remove incorrect use of ctype.h functions.Reimar Döffinger
As far as I can tell the code should not change behaviour depending on locale in any of these places. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
2013-01-05lavu: check that assert level is definedMichael Niedermayer
fix warning Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-05lavu: check av_clip*() limitsMichael Niedermayer
This code cannot use av_assert* due to circular header dependancies Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-15Merge commit '3b4296f41473a5b39e84d7a49d480624c9c60040'Michael Niedermayer
* commit '3b4296f41473a5b39e84d7a49d480624c9c60040': avformat: clarify stream id for muxing fate: Add dependencies for aac, alac, amrnb, amrwb, atrac tests ppc: do not pass redundant compiler flags avutil: change GET_UTF8 to not use av_log2() segment: fix NULL pointer dereference in seg_write_header() Conflicts: tests/fate/aac.mak Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-11-14avutil: change GET_UTF8 to not use av_log2()Mans Rullgard
This removes an inter-library dependency on ff_log2_tab causing linking errors in some configurations. Signed-off-by: Mans Rullgard <mans@mansr.com>
2012-10-27lavu: add av_clip64()Michael Niedermayer
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-21Merge commit 'd15c21e5fa3961f10026da1a3080a3aa3cf4cec9'Michael Niedermayer
* commit 'd15c21e5fa3961f10026da1a3080a3aa3cf4cec9': avutil: Add a copy of ff_sqrt_tab back into avutil to restore ABI compatibility avutil: make some tables visible again avutil: remove inline av_log2 from public API celp_math: rename ff_log2 to ff_log2_q15 Conflicts: libavutil/libavutil.v Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-10-20avutil: remove inline av_log2 from public APIMans Rullgard
This removes inline av_log2 and av_log2_16bit from the public API, instead exporting them as regular functions. In-tree code still gets the inline and otherwise optimised variants. Signed-off-by: Mans Rullgard <mans@mansr.com>