From patchwork Fri Aug 31 04:56:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gyan X-Patchwork-Id: 10185 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:12c4:0:0:0:0:0 with SMTP id 65-v6csp323394jap; Thu, 30 Aug 2018 21:56:32 -0700 (PDT) X-Google-Smtp-Source: ANB0Vdb8VQ5VaA+WIX/z3NsPoLgVTRKwwSNAD4YKoQ6fCbAAII5zIFXTrfgtwOvoxXCFMqsWJu21 X-Received: by 2002:adf:a512:: with SMTP id i18-v6mr9485203wrb.220.1535691392427; Thu, 30 Aug 2018 21:56:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1535691392; cv=none; d=google.com; s=arc-20160816; b=z63ljA3CqvsALEWSKh+52RlJm2c3B8KUk5FCcAOqdOJr+XniotjfCfpIlYF0jWhGYV WNqp59AfRjYiPi5+IV9BNWWyontZgz1KbbVorim2OYgbcyN0gyh9BMTLo1sEHgSmUyfk 8KpYhLRsGsFNCkPFKG9nehwtBEVxlPnoOPaSqWMWbB5eOqRVMnHU3wkTw+j7AU52yGwL 3HsehM4LTw1QGVaCOUYXfTVvG4u9mgmxN1NaXbSSGKW7Ar8AIg1ElFOu7apADMxygYVj y/gxJ0sjDwXC8Mhgxx2U4wXcYjmknw1GAvoV/AcEuwOnjSOyRDn5uCXJMsT+zRI6Xv91 u7Ew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :content-language:in-reply-to:mime-version:user-agent:date :message-id:references:to:from:dkim-signature:delivered-to :arc-authentication-results; bh=CF1x0cens+r4Wi6L0S36Q3+khrjDxWQMIUClfUFfhnw=; b=HTAH6NdwEFVhdeOO2IQWhx97vErZQZcEQIpdZmh42KZymjuoyHA26brXtob7i2QAa9 oif1xA9k9mTta6xA0NMsvCBi6oj6nFSRm8MNtGuAGR/fuUMSM6y1j3yHzmv6UixxEzDy 6e2sGidARmFbyKWFe2+9GlLaoWghU8CAiBlXEQQTQZwlEIDwODJs73aqCvRDhHm9irBL mzE2d+V5gBbxpusxffa4i3LTv2t+PMPir26sFkdGVsi8EIS/n8M0ZlyPbYeN+pkEkerP IlKqkqLlPZuLnkdtZDl/nJcBhnBmGLQazm1ogi/DUmyPLg2YJdqRGlKLq5RdhDMven5r xypQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=FZ+1sqvZ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id t27-v6si9126825wrb.341.2018.08.30.21.56.31; Thu, 30 Aug 2018 21:56:32 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=FZ+1sqvZ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2ED97689C0C; Fri, 31 Aug 2018 07:56:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 554E76898F6 for ; Fri, 31 Aug 2018 07:56:18 +0300 (EEST) Received: by mail-pl1-f196.google.com with SMTP id g23-v6so4858959plq.9 for ; Thu, 30 Aug 2018 21:56:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:from:to:references:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=eBLuMe+IMu1fM+0DSqkVXId7Sy/FkZw/jXeOwlT42Zw=; b=FZ+1sqvZrT7yJXbda2wa6acZfeQ57nAYAA6Tu+MEjt66YcSRHsj2dKthEgsO2hCReY WfXoI2dsCL1whdbzAnHJkQ0utXeukftBvmcwC7YuElsmiS8xoR4BKaNFqOz3hEqbRZaQ 43FoGZlp0kOCtR2Ur5S4+eyFKUSBNGoQBCOojztb8AC5O7tR4UEMNaPeM/9mgaX+XDnb 3AsP/NB770rWiGRpiaFumlc/JkXVhNQ4NJ1Np3eq2Rkxdn6ZIeC/AOVPy/9bbIyrtbsQ npWBkfWqvMe5UHpfZbDTkmfmsfr4RN3B43VYgbNTVmkadq2JPEkt5LlbeOrNVauo/qYu WYxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:references:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=eBLuMe+IMu1fM+0DSqkVXId7Sy/FkZw/jXeOwlT42Zw=; b=qeQZjb8OpkP5pe17XeYMVwrDlozxshrvQxh70Or4NJ7EYKUma33DbfPW7cxVL7Majn 8+OTm+5Vm277Btx5JJamKYT/fdNFaYAd53pr9/5k8nZjt5peupgvcDSRCyWYVxGzWH/w EfTj5301zrLIb1knWdjGo2BYveDeTu8vJVYlqfjkRynuWnXgC7Iat1fPZCryPgfpNcLO 0HVo1HyBySHQsRhStz4bDYer5tPM61cJf/jbbuLN7NR2DkbtttjGhbt4w3AU79vK8do9 BrlcTg+6cVOcIAzWUSo4LbxRSLr7ylNvkFSygaEtJH2kQNET2ATQraBqLdXwxG8a78uH Uotg== X-Gm-Message-State: APzg51BjQMQQCxkxE/iXDOUgJI6gX0uV9Q7YLWdbSY77qxjm7xWbECl0 hEq8B/fN98oFheTQu5dn1ZmGgKcL X-Received: by 2002:a17:902:a405:: with SMTP id p5-v6mr13470509plq.222.1535691381116; Thu, 30 Aug 2018 21:56:21 -0700 (PDT) Received: from [192.168.1.225] ([183.87.90.192]) by smtp.gmail.com with ESMTPSA id n79-v6sm20876222pfh.2.2018.08.30.21.56.18 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 30 Aug 2018 21:56:20 -0700 (PDT) From: Gyan Doshi To: ffmpeg-devel@ffmpeg.org References: <169c1509-0128-5e3d-1949-cd65f7a7aad0@gmail.com> <20180828211331.GJ19650@michaelspb> <11da24eb-fcf1-0d62-d469-1322bf47ef95@gmail.com> <649dccf3-9531-1644-37fa-063303355977@gmail.com> Message-ID: <6db1f071-2bb1-ece7-f2f6-b64b7342b433@gmail.com> Date: Fri, 31 Aug 2018 10:26:16 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <649dccf3-9531-1644-37fa-063303355977@gmail.com> Content-Language: en-US Subject: Re: [FFmpeg-devel] [PATCH] ffmpeg: block output == input for files X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" On 31-08-2018 09:57 AM, Gyan Doshi wrote: > On 31-08-2018 04:28 AM, Marton Balint wrote: > >> >> Is there any real use case when same source and destination works, so >> the option can be used? >> >> If not, then just make ffmpeg fail, like the cp command fails for same >> source and destination. I am against adding an option if it has no >> known use. > > Via the file protocol, not that I know of. Will remove. > > Gyan Revised patch attached. From 1422de3eecb921201727e90306edbe1ff6f26947 Mon Sep 17 00:00:00 2001 From: Gyan Doshi Date: Sun, 26 Aug 2018 11:22:50 +0530 Subject: [PATCH v2] ffmpeg: block output == input for files Fixes #4655 --- fftools/ffmpeg_opt.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 58ec13e5a8..c44ed63730 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -900,13 +900,14 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic) static void assert_file_overwrite(const char *filename) { + const char *proto_name = avio_find_protocol_name(filename); + if (file_overwrite && no_file_overwrite) { fprintf(stderr, "Error, both -y and -n supplied. Exiting.\n"); exit_program(1); } if (!file_overwrite) { - const char *proto_name = avio_find_protocol_name(filename); if (proto_name && !strcmp(proto_name, "file") && avio_check(filename, 0) == 0) { if (stdin_interaction && !no_file_overwrite) { fprintf(stderr,"File '%s' already exists. Overwrite ? [y/N] ", filename); @@ -925,6 +926,19 @@ static void assert_file_overwrite(const char *filename) } } } + + if (proto_name && !strcmp(proto_name, "file")) { + for (int i = 0; i < nb_input_files; i++) { + InputFile *file = input_files[i]; + if (file->ctx->iformat->flags & AVFMT_NOFILE) + continue; + if (!strcmp(filename, file->ctx->url)) { + av_log(NULL, AV_LOG_FATAL, "Output %s same as Input #%d - exiting\n", filename, i); + av_log(NULL, AV_LOG_WARNING, "FFmpeg cannot edit existing files in-place.\n"); + exit_program(1); + } + } + } } static void dump_attachment(AVStream *st, const char *filename)