From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id C5F144DD9D for ; Tue, 6 Jan 2026 02:11:33 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'S1dxOiB1YsGOD2jEFZQqTbfRL1fKSYZP8O45O/UjVG0=', expected b'g31N4UPLlXL6EgI+/BPDIIn/dGWqdRaRnfOK0Lt17c0=')) header.d=gmail.com header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1767665448; h=mime-version : date : message-id : to : content-type : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : from; bh=JItQ066iwU3XXZFvqvaNLbuHYuhaNEjxWtQ7tecw29I=; b=QCeQW4/ihHz4A01Zl1Y8wMRZfuWPmctlPgh83PysBVqBzjGstK8V6aOh8CZY+Y+lRjL12 V9j+X56ngWnfqlZuYj/8DnMTsl0HJqlefVsZQo8zgm/Rz5ZxSfNZ0FAnzE3R9uHmrTR7kUT MaIgIe+oDpgxfHua8bvjqep8GaHYZZoNTt0GJ1u7XtZIizH85Gz9HI9SwYsP1olNpWAgMhx iCDP0DqiHFWcRLw73kdOUmL0/OsCwZxVJGGZkVoy6hKBdprzlDp/co2ihVULEWa8/q10T54 7jU1yLfk8laKfyUBIemX4zYJbsfHwT0K1ofdQ0onfT/CDoRE3qt3DNK688kw== Received: from [172.20.0.4] (unknown [172.20.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id DAF2C690ED8; Tue, 6 Jan 2026 04:10:48 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1767665429; b=O9Ag+nP9WUF1Vm3zyGfGIB9bwPtwJliPW/kI+MhWIdaC/QlJzaMUF9XqIjKDJlw0pFzdW 8LU9/1mbuvzcro3H8VgxeOLp80J999Pwpn26g8XA4JldE7yCLT+lUsyTBgk8VGjq2ik/zMc 3OzPPQr9EayFQ0WqKefr9QqhnsNH2sqEOjTY3cV/9YC9nDDBA0gVrpKL1ZGnX9CrRpxtyA2 +82R6LJYs3DtRncD3fI4zpYK8dWm15JICppKBYr+YdqdfpoRtArQfcNtBA/FEBop402ghEU fun9q5OB9BCNzO5d3nGz/llDZseUPEMunSTCHviJSIQgagqiBcz/u+2+IMXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1767665429; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=BGpbGOY1byNyWmhWdPv2CtZ2y6BeZSnmSw3kEV9BKbA=; b=XEPCKQN1+CC5pJJkAN+Pagff0mrzQ+rKdGE+pDJeb6WwBiAbiVc+zglApniHrYSxZOiKR fk9Kw2SkR63o0NMTRKVCpnC4qt3a43U+ctLKaJ5nq0SgszR6WTr2WhZ9w/vLlvOyiAhjVW4 LEGi+2yXIEqHmAlfPvd+IGf6VF3wurWV43cixm1q1dkupGMsHwiuiNJlnXQuk/TesrgJdYM c5YWFo0jZLUIjS80l2xbjKcw+IlMlYtu5J5nZ32ygsz+/Jzo4W+9Jwn0u58WKg+8jwvXdf4 2IoYVg5IhTyDYghfYGAQv6SJVnSOFS96cHaJ3vTpTkFwoz3KadlmnXOygSsA== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=fail header.d=gmail.com; arc=none; dmarc=fail header.from=gmail.com policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=fail header.d=gmail.com; arc=none (Message is not ARC signed); dmarc=fail (Used From Domain Record) header.from=gmail.com policy.dmarc=quarantine Received: from mail-yw1-f182.google.com (mail-yw1-f182.google.com [209.85.128.182]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id F331868FEE0 for ; Sat, 3 Jan 2026 20:29:32 +0200 (EET) Received: by mail-yw1-f182.google.com with SMTP id 00721157ae682-78fc4425b6bso79412047b3.1 for ; Sat, 03 Jan 2026 10:29:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767464971; x=1768069771; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=g31N4UPLlXL6EgI+/BPDIIn/dGWqdRaRnfOK0Lt17c0=; b=DXR6hiGu/IExE7kEogaQsrNlZd/fp9myFTcT9ewAtAXCM9Aldj5CWd22FLXeUOPOhx fTKfLcATUZyPl1lbGmw/M7YqBlwW00U9eivV02aQOmdtZTbYTwChxSZUvFhywY9YZHR1 I4L/h8Bplcj8FhfBpX/8SD795ED3dpnsRiqvQleQQxWTtZCfaURe7FTduXslE0kS9Azx C5iIMv7M1Mv4yuRinow/7fH5Xh0QxBFzEK6eA+BZeydCE1bdgBDfLCJ9NDH+FtjhRYg9 Uha5+qvOfO9xH3oqubLlTaFzciTOjcSHLC7vzjq8fCN0TNzXCe1dvmr5EmsMb3t4pDFl oF4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767464971; x=1768069771; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=g31N4UPLlXL6EgI+/BPDIIn/dGWqdRaRnfOK0Lt17c0=; b=Ek8iKQdTaLBM0csaAlb425sdqsXC+g7fc27XQbdLj1UjNpYijW+FU2W5b8LrXryLqD vF9YgRs50UOaYBRdtsNP+klPI1SsKowSl5ix6McvEwcGsAsfe7LCfzut6rFaAWTQRv5L stJOHJdB73NCQGwzw+CMTM9IVZ9phQXWo3ohGz8eZiwYdKSvKCpxBSYrBu4YsYL0ImN0 Km43PgwQ7ZzKk39e5LYfEKZiNy96N5USiVnyN4SQQyhth4OxS+Tb/qE96frbpP1MQilb 3T/vF73cZhxiNP8C1eGKPnHxmpCqz0xP/eYToa7sd0rBVYRcU8cXvyf1NIFEIMSs+/GN cTig== X-Gm-Message-State: AOJu0YylNna5c4k75kafObh3duIUOmh9danl3BBlZwU7RyisCjDTxR62 jYxMDEphCInAVo6b0agFeBBqrSrgFonRYP9l7l/MVG78fmmmUIEC65/KUocnQxNCSg47BO8RRbx FUBL+Y2h0krtxNLzVPJF1yJ1QS2pcxaj39MRu X-Gm-Gg: AY/fxX6wLP0utg1SkHK8ly/elRMc7kLUD9sD+VNqUzvkrHMH7hsvQGbXWjRYo5upUoV 9GEGpP0alA4yRvqUpY7uXHqxUtboQJOKgfPgiKRo3i+Kw0pycUUCDu2lIztxi6rI6/jE86yCWBQ Mdej8pDnbOLFXCKk1ePkZ5aUQY658eLtJeBvRMx4cRYiCqPXd2PyjH4ELb6DI+ZIMSdySG+ugTS MB4lJyQ1WpWV+F9MOxfS4FVaY0XXL46XH5aTtK/5IU3olOhU01Yj0gS/0wUn7xalKtCwOxI4vSh Bw393YCIQJlO1Ef47L4w0NWvFjWe X-Google-Smtp-Source: AGHT+IG+aaDairXSDGb8d1FD05AhkBNUnlilAAVU8Kg/x1Se4dECYV4x6kI0oaJVGyzHfsO20VENqeBRAnSpx2+LIfQ= X-Received: by 2002:a05:690c:6289:b0:787:e384:4e7 with SMTP id 00721157ae682-78fb418ae1bmr351855597b3.51.1767464971500; Sat, 03 Jan 2026 10:29:31 -0800 (PST) MIME-Version: 1.0 Date: Sat, 3 Jan 2026 19:29:20 +0100 X-Gm-Features: AQt7F2qny6xPjPybQZTsCDl12YlveLWFUZXtoD8640zWMQ5zLxux51V9I1BLN2A Message-ID: To: ffmpeg-devel@ffmpeg.org Content-Type: multipart/mixed; boundary="000000000000c7d3460647800144" X-MailFrom: SRS0=/TDB=7I=gmail.com=monsterbat02@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation Message-ID-Hash: SKGJVKIU7OVRWMEUNQBKRL6RVISK6IUS X-Message-ID-Hash: SKGJVKIU7OVRWMEUNQBKRL6RVISK6IUS X-Mailman-Approved-At: Tue, 06 Jan 2026 02:09:10 +0000 X-Content-Filtered-By: Mailman/MimeDel 3.3.10 X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] examples: fix memory leaks, zombie processes and integer overflows List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Baptiste Bd via ffmpeg-devel Cc: Baptiste Bd Archived-At: List-Archive: List-Post: --000000000000c7d3460647800144 Content-Type: text/plain; charset="UTF-8" >>From 78bb1086f99b6ba234a9874246feb15360c8496c Mon Sep 17 00:00:00 2001 From: OxBat Date: Sat, 3 Jan 2026 19:23:35 +0100 Subject: [PATCH] examples: fix memory leaks, zombie processes and integer overflows --- doc/examples/avio_http_serve_files.c | 2 ++ doc/examples/extract_mvs.c | 3 ++- doc/examples/filter_audio.c | 6 ++++++ doc/examples/hw_decode.c | 6 ++++-- doc/examples/qsv_transcode.c | 5 +++++ doc/examples/transcode.c | 14 ++++++++------ 6 files changed, 27 insertions(+), 9 deletions(-) diff --git a/doc/examples/avio_http_serve_files.c b/doc/examples/avio_http_serve_files.c index 2aae3870c2..9aaf4b273b 100644 --- a/doc/examples/avio_http_serve_files.c +++ b/doc/examples/avio_http_serve_files.c @@ -31,6 +31,7 @@ #include #include #include +#include /* NEW */ static void process_client(AVIOContext *client, const char *in_uri) { @@ -103,6 +104,7 @@ int main(int argc, char **argv) const char *in_uri, *out_uri; int ret, pid; av_log_set_level(AV_LOG_TRACE); + signal(SIGCHLD, SIG_IGN); /* PATCH: Prevent zombie processes */ if (argc < 3) { printf("usage: %s input http://hostname[:port]\n" "API example program to serve http to multiple clients.\n" diff --git a/doc/examples/extract_mvs.c b/doc/examples/extract_mvs.c index 5603064d72..3052473e81 100644 --- a/doc/examples/extract_mvs.c +++ b/doc/examples/extract_mvs.c @@ -105,10 +105,11 @@ static int open_codec_context(AVFormatContext *fmt_ctx, enum AVMediaType type) fprintf(stderr, "Failed to allocate codec\n"); return AVERROR(EINVAL); } - + /* PATCH: Memory leak*/ ret = avcodec_parameters_to_context(dec_ctx, st->codecpar); if (ret < 0) { fprintf(stderr, "Failed to copy codec parameters to codec context\n"); + avcodec_free_context(&dec_ctx); /* PATCH: Fix leak */ return ret; } diff --git a/doc/examples/filter_audio.c b/doc/examples/filter_audio.c index ad77bf1f89..c4673bddef 100644 --- a/doc/examples/filter_audio.c +++ b/doc/examples/filter_audio.c @@ -88,6 +88,7 @@ static int init_filter_graph(AVFilterGraph **graph, AVFilterContext **src, abuffer = avfilter_get_by_name("abuffer"); if (!abuffer) { fprintf(stderr, "Could not find the abuffer filter.\n"); + avfilter_graph_free(&filter_graph); /* PATCH: Fix leak */ return AVERROR_FILTER_NOT_FOUND; } @@ -279,6 +280,11 @@ int main(int argc, char *argv[]) } duration = atof(argv[1]); +/* PATCH: Check for integer overflow */ + if (duration > (double)2147483647 / INPUT_SAMPLERATE) { + fprintf(stderr, "Duration too long\n"); + return 1; + } nb_frames = duration * INPUT_SAMPLERATE / FRAME_SIZE; if (nb_frames <= 0) { fprintf(stderr, "Invalid duration: %s\n", argv[1]); diff --git a/doc/examples/hw_decode.c b/doc/examples/hw_decode.c index ac4e445505..caef3e93e3 100644 --- a/doc/examples/hw_decode.c +++ b/doc/examples/hw_decode.c @@ -215,8 +215,10 @@ int main(int argc, char *argv[]) return AVERROR(ENOMEM); video = input_ctx->streams[video_stream]; - if (avcodec_parameters_to_context(decoder_ctx, video->codecpar) < 0) - return -1; + if (avcodec_parameters_to_context(decoder_ctx, video->codecpar) < 0) { + avcodec_free_context(&decoder_ctx); /* PATCH: Fix leak */ + return -1; +} decoder_ctx->get_format = get_hw_format; diff --git a/doc/examples/qsv_transcode.c b/doc/examples/qsv_transcode.c index 13b4933041..b780a65c79 100644 --- a/doc/examples/qsv_transcode.c +++ b/doc/examples/qsv_transcode.c @@ -351,6 +351,11 @@ int main(int argc, char **argv) } setting_number = (argc - 5) / 2; dynamic_setting = av_malloc(setting_number * sizeof(*dynamic_setting)); + /* PATCH: Check allocation */ + if (!dynamic_setting) { + ret = AVERROR(ENOMEM); + goto end; + } current_setting_number = 0; for (int i = 0; i < setting_number; i++) { dynamic_setting[i].frame_number = atoi(argv[i*2 + 5]); diff --git a/doc/examples/transcode.c b/doc/examples/transcode.c index 1dc1b50502..6dcacc1d4f 100644 --- a/doc/examples/transcode.c +++ b/doc/examples/transcode.c @@ -92,12 +92,14 @@ static int open_input_file(const char *filename) av_log(NULL, AV_LOG_ERROR, "Failed to allocate the decoder context for stream #%u\n", i); return AVERROR(ENOMEM); } - ret = avcodec_parameters_to_context(codec_ctx, stream->codecpar); - if (ret < 0) { - av_log(NULL, AV_LOG_ERROR, "Failed to copy decoder parameters to input decoder context " - "for stream #%u\n", i); - return ret; - } + /* PATCH: Memory leak - Input Decoder */ + ret = avcodec_parameters_to_context(codec_ctx, stream->codecpar); + if (ret < 0) { + av_log(NULL, AV_LOG_ERROR, "Failed to copy decoder parameters to input decoder context " + "for stream #%u\n", i); + avcodec_free_context(&codec_ctx); /* PATCH: Fix leak */ + return ret; + } /* Inform the decoder about the timebase for the packet timestamps. * This is highly recommended, but not mandatory. */ -- 2.52.0.windows.1 --000000000000c7d3460647800144 Content-Type: application/octet-stream; name="0001-examples-fix-memory-leaks-zombie-processes-and-integ.patch" Content-Disposition: attachment; filename="0001-examples-fix-memory-leaks-zombie-processes-and-integ.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjymzso00 RnJvbSA3OGJiMTA4NmY5OWI2YmEyMzRhOTg3NDI0NmZlYjE1MzYwYzg0OTZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPeEJhdCA8bW9uc3RlcmJhdDAyQGdtYWlsLmNvbT4KRGF0ZTog U2F0LCAzIEphbiAyMDI2IDE5OjIzOjM1ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gZXhhbXBsZXM6 IGZpeCBtZW1vcnkgbGVha3MsIHpvbWJpZSBwcm9jZXNzZXMgYW5kIGludGVnZXIKIG92ZXJmbG93 cwoKLS0tCiBkb2MvZXhhbXBsZXMvYXZpb19odHRwX3NlcnZlX2ZpbGVzLmMgfCAgMiArKwogZG9j L2V4YW1wbGVzL2V4dHJhY3RfbXZzLmMgICAgICAgICAgIHwgIDMgKystCiBkb2MvZXhhbXBsZXMv ZmlsdGVyX2F1ZGlvLmMgICAgICAgICAgfCAgNiArKysrKysKIGRvYy9leGFtcGxlcy9od19kZWNv ZGUuYyAgICAgICAgICAgICB8ICA2ICsrKystLQogZG9jL2V4YW1wbGVzL3Fzdl90cmFuc2NvZGUu YyAgICAgICAgIHwgIDUgKysrKysKIGRvYy9leGFtcGxlcy90cmFuc2NvZGUuYyAgICAgICAgICAg ICB8IDE0ICsrKysrKysrLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyks IDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2V4YW1wbGVzL2F2aW9faHR0cF9zZXJ2 ZV9maWxlcy5jIGIvZG9jL2V4YW1wbGVzL2F2aW9faHR0cF9zZXJ2ZV9maWxlcy5jCmluZGV4IDJh YWUzODcwYzIuLjlhYWY0YjI3M2IgMTAwNjQ0Ci0tLSBhL2RvYy9leGFtcGxlcy9hdmlvX2h0dHBf c2VydmVfZmlsZXMuYworKysgYi9kb2MvZXhhbXBsZXMvYXZpb19odHRwX3NlcnZlX2ZpbGVzLmMK QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1hdC5oPgogI2lu Y2x1ZGUgPGxpYmF2dXRpbC9vcHQuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxz aWduYWwuaD4gIC8qIE5FVyAqLwogCiBzdGF0aWMgdm9pZCBwcm9jZXNzX2NsaWVudChBVklPQ29u dGV4dCAqY2xpZW50LCBjb25zdCBjaGFyICppbl91cmkpCiB7CkBAIC0xMDMsNiArMTA0LDcgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIGNvbnN0IGNoYXIgKmluX3VyaSwg Km91dF91cmk7CiAgICAgaW50IHJldCwgcGlkOwogICAgIGF2X2xvZ19zZXRfbGV2ZWwoQVZfTE9H X1RSQUNFKTsKKyAgICBzaWduYWwoU0lHQ0hMRCwgU0lHX0lHTik7IC8qIFBBVENIOiBQcmV2ZW50 IHpvbWJpZSBwcm9jZXNzZXMgKi8KICAgICBpZiAoYXJnYyA8IDMpIHsKICAgICAgICAgcHJpbnRm KCJ1c2FnZTogJXMgaW5wdXQgaHR0cDovL2hvc3RuYW1lWzpwb3J0XVxuIgogICAgICAgICAgICAg ICAgIkFQSSBleGFtcGxlIHByb2dyYW0gdG8gc2VydmUgaHR0cCB0byBtdWx0aXBsZSBjbGllbnRz LlxuIgpkaWZmIC0tZ2l0IGEvZG9jL2V4YW1wbGVzL2V4dHJhY3RfbXZzLmMgYi9kb2MvZXhhbXBs ZXMvZXh0cmFjdF9tdnMuYwppbmRleCA1NjAzMDY0ZDcyLi4zMDUyNDczZTgxIDEwMDY0NAotLS0g YS9kb2MvZXhhbXBsZXMvZXh0cmFjdF9tdnMuYworKysgYi9kb2MvZXhhbXBsZXMvZXh0cmFjdF9t dnMuYwpAQCAtMTA1LDEwICsxMDUsMTEgQEAgc3RhdGljIGludCBvcGVuX2NvZGVjX2NvbnRleHQo QVZGb3JtYXRDb250ZXh0ICpmbXRfY3R4LCBlbnVtIEFWTWVkaWFUeXBlIHR5cGUpCiAgICAgICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBhbGxvY2F0ZSBjb2RlY1xuIik7CiAgICAg ICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgICAgICB9Ci0KKyAgICAgICAgLyog UEFUQ0g6IE1lbW9yeSBsZWFrKi8KICAgICAgICAgcmV0ID0gYXZjb2RlY19wYXJhbWV0ZXJzX3Rv X2NvbnRleHQoZGVjX2N0eCwgc3QtPmNvZGVjcGFyKTsKICAgICAgICAgaWYgKHJldCA8IDApIHsK ICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNvcHkgY29kZWMgcGFyYW1l dGVycyB0byBjb2RlYyBjb250ZXh0XG4iKTsKKyAgICAgICAgICAgIGF2Y29kZWNfZnJlZV9jb250 ZXh0KCZkZWNfY3R4KTsgLyogUEFUQ0g6IEZpeCBsZWFrICovCiAgICAgICAgICAgICByZXR1cm4g cmV0OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL2RvYy9leGFtcGxlcy9maWx0ZXJfYXVkaW8u YyBiL2RvYy9leGFtcGxlcy9maWx0ZXJfYXVkaW8uYwppbmRleCBhZDc3YmYxZjg5Li5jNDY3M2Jk ZGVmIDEwMDY0NAotLS0gYS9kb2MvZXhhbXBsZXMvZmlsdGVyX2F1ZGlvLmMKKysrIGIvZG9jL2V4 YW1wbGVzL2ZpbHRlcl9hdWRpby5jCkBAIC04OCw2ICs4OCw3IEBAIHN0YXRpYyBpbnQgaW5pdF9m aWx0ZXJfZ3JhcGgoQVZGaWx0ZXJHcmFwaCAqKmdyYXBoLCBBVkZpbHRlckNvbnRleHQgKipzcmMs CiAgICAgYWJ1ZmZlciA9IGF2ZmlsdGVyX2dldF9ieV9uYW1lKCJhYnVmZmVyIik7CiAgICAgaWYg KCFhYnVmZmVyKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IGZpbmQgdGhl IGFidWZmZXIgZmlsdGVyLlxuIik7CisgICAgICAgIGF2ZmlsdGVyX2dyYXBoX2ZyZWUoJmZpbHRl cl9ncmFwaCk7IC8qIFBBVENIOiBGaXggbGVhayAqLwogICAgICAgICByZXR1cm4gQVZFUlJPUl9G SUxURVJfTk9UX0ZPVU5EOwogICAgIH0KIApAQCAtMjc5LDYgKzI4MCwxMSBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogICAgIH0KIAogICAgIGR1cmF0aW9uICA9IGF0b2YoYXJn dlsxXSk7CisvKiBQQVRDSDogQ2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICBpZiAo ZHVyYXRpb24gPiAoZG91YmxlKTIxNDc0ODM2NDcgLyBJTlBVVF9TQU1QTEVSQVRFKSB7CisgICAg ZnByaW50ZihzdGRlcnIsICJEdXJhdGlvbiB0b28gbG9uZ1xuIik7CisgICAgcmV0dXJuIDE7Cisg ICAgfQogICAgIG5iX2ZyYW1lcyA9IGR1cmF0aW9uICogSU5QVVRfU0FNUExFUkFURSAvIEZSQU1F X1NJWkU7CiAgICAgaWYgKG5iX2ZyYW1lcyA8PSAwKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJy LCAiSW52YWxpZCBkdXJhdGlvbjogJXNcbiIsIGFyZ3ZbMV0pOwpkaWZmIC0tZ2l0IGEvZG9jL2V4 YW1wbGVzL2h3X2RlY29kZS5jIGIvZG9jL2V4YW1wbGVzL2h3X2RlY29kZS5jCmluZGV4IGFjNGU0 NDU1MDUuLmNhZWYzZTkzZTMgMTAwNjQ0Ci0tLSBhL2RvYy9leGFtcGxlcy9od19kZWNvZGUuYwor KysgYi9kb2MvZXhhbXBsZXMvaHdfZGVjb2RlLmMKQEAgLTIxNSw4ICsyMTUsMTAgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVN KTsKIAogICAgIHZpZGVvID0gaW5wdXRfY3R4LT5zdHJlYW1zW3ZpZGVvX3N0cmVhbV07Ci0gICAg aWYgKGF2Y29kZWNfcGFyYW1ldGVyc190b19jb250ZXh0KGRlY29kZXJfY3R4LCB2aWRlby0+Y29k ZWNwYXIpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChhdmNvZGVjX3BhcmFtZXRl cnNfdG9fY29udGV4dChkZWNvZGVyX2N0eCwgdmlkZW8tPmNvZGVjcGFyKSA8IDApIHsKKyAgICBh dmNvZGVjX2ZyZWVfY29udGV4dCgmZGVjb2Rlcl9jdHgpOyAvKiBQQVRDSDogRml4IGxlYWsgKi8K KyAgICByZXR1cm4gLTE7Cit9CiAKICAgICBkZWNvZGVyX2N0eC0+Z2V0X2Zvcm1hdCAgPSBnZXRf aHdfZm9ybWF0OwogCmRpZmYgLS1naXQgYS9kb2MvZXhhbXBsZXMvcXN2X3RyYW5zY29kZS5jIGIv ZG9jL2V4YW1wbGVzL3Fzdl90cmFuc2NvZGUuYwppbmRleCAxM2I0OTMzMDQxLi5iNzgwYTY1Yzc5 IDEwMDY0NAotLS0gYS9kb2MvZXhhbXBsZXMvcXN2X3RyYW5zY29kZS5jCisrKyBiL2RvYy9leGFt cGxlcy9xc3ZfdHJhbnNjb2RlLmMKQEAgLTM1MSw2ICszNTEsMTEgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogICAgIH0KICAgICBzZXR0aW5nX251bWJlciA9IChhcmdjIC0gNSkg LyAyOwogICAgIGR5bmFtaWNfc2V0dGluZyA9IGF2X21hbGxvYyhzZXR0aW5nX251bWJlciAqIHNp emVvZigqZHluYW1pY19zZXR0aW5nKSk7CisgICAgLyogUEFUQ0g6IENoZWNrIGFsbG9jYXRpb24g Ki8KKyAgICBpZiAoIWR5bmFtaWNfc2V0dGluZykgeworICAgICAgICByZXQgPSBBVkVSUk9SKEVO T01FTSk7CisgICAgICAgIGdvdG8gZW5kOworICAgIH0KICAgICBjdXJyZW50X3NldHRpbmdfbnVt YmVyID0gMDsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNldHRpbmdfbnVtYmVyOyBpKyspIHsK ICAgICAgICAgZHluYW1pY19zZXR0aW5nW2ldLmZyYW1lX251bWJlciA9IGF0b2koYXJndltpKjIg KyA1XSk7CmRpZmYgLS1naXQgYS9kb2MvZXhhbXBsZXMvdHJhbnNjb2RlLmMgYi9kb2MvZXhhbXBs ZXMvdHJhbnNjb2RlLmMKaW5kZXggMWRjMWI1MDUwMi4uNmRjYWNjMWQ0ZiAxMDA2NDQKLS0tIGEv ZG9jL2V4YW1wbGVzL3RyYW5zY29kZS5jCisrKyBiL2RvYy9leGFtcGxlcy90cmFuc2NvZGUuYwpA QCAtOTIsMTIgKzkyLDE0IEBAIHN0YXRpYyBpbnQgb3Blbl9pbnB1dF9maWxlKGNvbnN0IGNoYXIg KmZpbGVuYW1lKQogICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIkZhaWxl ZCB0byBhbGxvY2F0ZSB0aGUgZGVjb2RlciBjb250ZXh0IGZvciBzdHJlYW0gIyV1XG4iLCBpKTsK ICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAgICAgIH0KLSAgICAgICAg cmV0ID0gYXZjb2RlY19wYXJhbWV0ZXJzX3RvX2NvbnRleHQoY29kZWNfY3R4LCBzdHJlYW0tPmNv ZGVjcGFyKTsKLSAgICAgICAgaWYgKHJldCA8IDApIHsKLSAgICAgICAgICAgIGF2X2xvZyhOVUxM LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gY29weSBkZWNvZGVyIHBhcmFtZXRlcnMgdG8gaW5w dXQgZGVjb2RlciBjb250ZXh0ICIKLSAgICAgICAgICAgICAgICAgICAiZm9yIHN0cmVhbSAjJXVc biIsIGkpOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfQorICAgIC8qIFBBVENI OiBNZW1vcnkgbGVhayAtIElucHV0IERlY29kZXIgKi8KKyAgICByZXQgPSBhdmNvZGVjX3BhcmFt ZXRlcnNfdG9fY29udGV4dChjb2RlY19jdHgsIHN0cmVhbS0+Y29kZWNwYXIpOworICAgIGlmIChy ZXQgPCAwKSB7CisgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8g Y29weSBkZWNvZGVyIHBhcmFtZXRlcnMgdG8gaW5wdXQgZGVjb2RlciBjb250ZXh0ICIKKyAgICAg ICAgICAgImZvciBzdHJlYW0gIyV1XG4iLCBpKTsKKyAgICAgICAgYXZjb2RlY19mcmVlX2NvbnRl eHQoJmNvZGVjX2N0eCk7IC8qIFBBVENIOiBGaXggbGVhayAqLworICAgICAgICByZXR1cm4gcmV0 OworICAgIH0KIAogICAgICAgICAvKiBJbmZvcm0gdGhlIGRlY29kZXIgYWJvdXQgdGhlIHRpbWVi YXNlIGZvciB0aGUgcGFja2V0IHRpbWVzdGFtcHMuCiAgICAgICAgICAqIFRoaXMgaXMgaGlnaGx5 IHJlY29tbWVuZGVkLCBidXQgbm90IG1hbmRhdG9yeS4gKi8KLS0gCjIuNTIuMC53aW5kb3dzLjEK Cg== --000000000000c7d3460647800144 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org --000000000000c7d3460647800144--