[FFmpeg-devel] [PATCH] avutil/error: Provide better feedback about unknown error codes
Marton Balint
cus at passwd.hu
Mon Jul 15 18:45:24 EEST 2024
On Mon, 15 Jul 2024, Andrew Sayers wrote:
> AVERROR messages should always be less than zero,
> and are usually based on three or four ASCII characters.
>
> For error codes that aren't explicitly handled by error.c (e.g. FFERROR_REDO),
> print the ASCII code so the user has a little more information.
All ffmpeg internal error codes (including the ones having some special
tag representation) should be handled by error.c. The user should never
receive FFERROR_REDO, that is an internal error code, it should never
reach the user. Therefore I see no benefit in disclosing the error bytes,
because that is not the proper fix.
Regards,
Marton
>
> If a non-negative number somehow gets passed to this function,
> print a message saying this shouldn't happen.
> ---
> libavutil/error.c | 32 ++++++++++++++++++++++++++++++++
> 1 file changed, 32 insertions(+)
>
> diff --git a/libavutil/error.c b/libavutil/error.c
> index 90bab7b9d3..c40b54b1f9 100644
> --- a/libavutil/error.c
> +++ b/libavutil/error.c
> @@ -119,6 +119,38 @@ int av_strerror(int errnum, char *errbuf, size_t errbuf_size)
> }
> if (entry) {
> av_strlcpy(errbuf, entry->str, errbuf_size);
> + } else if (
> + -errnum <= 0xFFFFFFFF
> + && ((-errnum >> 0) & 0xFF) >= 0x20 && ((-errnum >> 0) & 0xFF) <= 0x7F
> + && ((-errnum >> 8) & 0xFF) >= 0x20 && ((-errnum >> 8) & 0xFF) <= 0x7F
> + && ((-errnum >> 16) & 0xFF) >= 0x20 && ((-errnum >> 16) & 0xFF) <= 0x7F
> + && (
> + (((-errnum >> 24) & 0xFF) >= 0x20 && ((-errnum >> 24) & 0xFF) <= 0x7F)
> + || !((-errnum >> 24) & 0xFF)
> + )
> + ) {
> + if ((-errnum >> 24) & 0xFF) {
> + snprintf(
> + errbuf,
> + errbuf_size,
> + "Unrecognised error code \"%c%c%c%c\" occurred",
> + (-errnum >> 0) & 0xFF,
> + (-errnum >> 8) & 0xFF,
> + (-errnum >> 16) & 0xFF,
> + (-errnum >> 24) & 0xFF
> + );
> + } else {
> + snprintf(
> + errbuf,
> + errbuf_size,
> + "Unrecognised error code \"%c%c%c\" occurred",
> + (-errnum >> 0) & 0xFF,
> + (-errnum >> 8) & 0xFF,
> + (-errnum >> 16) & 0xFF
> + );
> + }
> + } else if (errnum >= 0) {
> + snprintf(errbuf, errbuf_size, "Impossible: non-negative error number %d occurred", errnum);
> } else {
> #if HAVE_STRERROR_R
> ret = AVERROR(strerror_r(AVUNERROR(errnum), errbuf, errbuf_size));
> --
> 2.45.2
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
More information about the ffmpeg-devel
mailing list