1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00
Commit Graph

17 Commits

Author SHA1 Message Date
Andreas Rheinhardt
8bea4a83aa avutil/bprint: Allow size == 0 in av_bprint_init_for_buffer()
The AVBPrint API guarantees that the string buffer is always
zero-terminated; in order to honour this guarantee, there
obviously must be a string buffer at all and it must have
a size >= 1. Therefore av_bprint_init_for_buffer() treats
passing a NULL buffer or size == 0 as invalid data that
leads to undefined behaviour, namely NPD in case NULL is provided
or a write to a buffer of size 0 in case size == 0.

But it would be easy to support this, namely by using the internal
buffer with AV_BPRINT_SIZE_COUNT_ONLY in case size == 0.

There is a reason to allow this: Several functions like
av_channel_(description|name) are actually wrappers
around corresponding AVBPrint functions. They accept user
provided buffers and are supposed to return the required
size of the buffer, which would allow the user to call
it once to get the required buffer size and call it once
more after having allocated the buffer.
If av_bprint_init_for_buffer() treats size == 0 as invalid,
all these users would need to check for this themselves
and basically add the same codeblock that this patch
adds to av_bprint_init_for_buffer().

This change is in line with e.g. snprintf() which also allows
the pointer to be NULL in case size is zero.

This fixes Coverity issues #1503074, #1503076 and #1503082;
all of these issues are about providing NULL to the channel-layout
functions that are wrappers around AVBPrint versions.

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2023-08-10 08:53:38 +02:00
Marvin Scholz
58b86d8b68 avutil/bprint: Improve doxy documentation
Declare proper group, add the file to that group,
group the defines and document them.

Use lists to represents lists of cases.
2022-10-17 09:55:19 +02:00
Vadim Kalinsky
2db29482f1 avutil/bprint: C++ compatible AVBPrint definition.
Previous version reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-11-29 03:51:35 +01:00
Nicolas George
eb7a6d0813 lavu/bprint: add const to av_bprint_is_complete() argument. 2014-09-21 19:42:21 +02:00
Michael Niedermayer
9514472904 avutil & avdevice: remove av_bprint_fd_contents()
MSVC does not allow passing file pointers between libs
This API can thus not work with MSVC and as it was very recently added
and its it was in no release its removial should not cause any problems

A better API will be implemented, but its not finished yet, this revert is
to avoid potentially blocking the release

Found-by: Hendrik Leppkes <h.leppkes@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-15 21:49:56 +02:00
Andrey Utkin
fcd1f6bc9d avutil/bprint: Add av_bprint_fd_contents()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-07 21:28:18 +02:00
Lukasz Marek
0b46d6f3ef lavu/bprint: add append buffer function
Signed-off-by: Lukasz Marek <lukasz.m.luki@gmail.com>
Reveiwed-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-30 22:36:38 +02:00
Michael Niedermayer
112c970ca6 avutil/bprint: add av_vbprintf()
Reviewed-by: Nicolas George <nicolas.george@normalesup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-08-10 17:01:42 +02:00
Michael Niedermayer
87a2bf2459 avutil/bprint: Fix doxygen comments
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-05-24 15:36:54 +02:00
Stefano Sabatini
9767ec6b86 lavu: add escape API
The escape API will be useful to perform escaping programmatically, which
is required when crafting argument strings, and will be used for context
printing as well.

This is based on the ffescape tool code, with a few extensions and fixes.
2013-03-07 01:12:04 +01:00
Nicolas George
4cd74c8143 lavu/bprint: implement av_bprint_strftime(). 2012-11-17 19:47:56 +01:00
Nicolas George
483c1aa5f1 lavu/bprint: add av_bprint_get_buffer().
It is useful to use bprint to handle a growing buffer
used with another API.
2012-11-02 15:12:29 +01:00
Stefano Sabatini
a7c3720e87 lavu/bprint: readd documentation for 0 and 1 av_bprint_init() special values
The documentation was erroneously removed in 7cf9aadd.
2012-07-31 13:15:43 +02:00
Stefano Sabatini
7cf9aaddcd lavu/bprint: extend/clarify documentation for av_bprint_init() size_max value
Also define AV_BPRINT_SIZE_* macros before av_bprint_init() declaration,
and mention them in the av_bprint_init() doxy.
2012-07-28 10:49:08 +02:00
Nicolas George
b3e2bb08a9 bprint: add av_bprint_init_for_buffer(). 2012-06-07 22:28:32 +02:00
Clément Bœsch
9548deeea9 lavu/bprint: add av_bprint_reset(). 2012-05-14 19:11:39 +02:00
Nicolas George
b75c67dc01 lavu: add av_bprintf and related. 2012-03-21 13:39:28 +01:00