From patchwork Wed Feb 12 15:31:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 17762 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E8F2544B416 for ; Wed, 12 Feb 2020 17:31:46 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D63F568AD6C; Wed, 12 Feb 2020 17:31:46 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CDBA6689F6B for ; Wed, 12 Feb 2020 17:31:39 +0200 (EET) Received: by mail-wr1-f68.google.com with SMTP id t3so2888616wru.7 for ; Wed, 12 Feb 2020 07:31:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=95WcuPYMI4e5l8W+DvDfURUzxvjuTxp+HvEqU3gvSZE=; b=NOlrjlO6wA1dFNe6aEGyAXoztZ2UjUzrozvGEAArgAz39/xXcNjG6SjaKRf7KBPxwG RrG1OgYmENixfT+Ds9lDO97bkvF3cCIbsnJ/LZvLiljXJsBzH7HY9P4u2MPevlylwUL6 a/TlrJWEMXEgfImrIg9/QzKgiwYEUWxNPfHlqFdnufO5Q/GN25IjsPk7oNKbNamRZ7MH TlueDyOo2QI3qzeV4BQkJOdOS70Y+DayHtRK3DfFssVehpcHGiEKMfr///op/ubM4bHv iowX7IXBXjRT7SBd/c9wg27hDLCtocbZ3JH1u6iSoahm+3mFVluPfhkSzCjrd9S2S4U2 iypQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=95WcuPYMI4e5l8W+DvDfURUzxvjuTxp+HvEqU3gvSZE=; b=rz1DOlj5qrrFFZrZG/ajMU/aBGBdlBRBQzhtzVbM5uPs3bA3wpsV12VkbSoH5CsYpR QojOLykuXOrJBKN8M9YD4RWn4+h9fT7tbzta8EerAj+LriiXMJvUdcgNN1rGO0Z2ASFa MN8OYAnhvus29WveWsog2mzrA1KNLMztoDHZ9EYkDiPs1SyxN3KeOEAm5yfgHw37DdIm N9WGK8YUumD2pjixbGHmKWAuIO3OHZzu5Yc82Qqznxgme3/RtPMTw7PuWtcvyMN3xF8t HerPaoChAcnmk+9MwASb+Oe4zGSqQ4bulDlLU/zKblR1KSaQXGUv2KFRWyn3sla0ZxPh kZcw== X-Gm-Message-State: APjAAAXw9NLnp02f8KddMw5zmTX20Y/3O3Wr7Z4588Ake+hWTj8vvIkO mLfn2ckxsDxi9yKGzzqLWruyt+ZR X-Google-Smtp-Source: APXvYqwpVoF/avEdb4l9Pk1wBnJhY2YtoKJvBJ7Ji6F5z3RE8fi4QvXIOuwyjMSRkSBVzNrwrjMhqw== X-Received: by 2002:a5d:4709:: with SMTP id y9mr15816113wrq.412.1581521499126; Wed, 12 Feb 2020 07:31:39 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id a16sm979459wrt.30.2020.02.12.07.31.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Feb 2020 07:31:38 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Feb 2020 16:31:27 +0100 Message-Id: <20200212153127.1255-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200212150223.28790-1-andreas.rheinhardt@gmail.com> References: <20200212150223.28790-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/avpacket: Don't write into non-writable buffer 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The data of an AVPacket may be a part of the data of an AVBufferRef; Therefore av_grow_packet() doesn't reallocate if the available space in the actual buffer is sufficient for the enlargement. But given that it also zeroes the padding it also needs to make sure that the buffer is actually writable; this commit implements this. Signed-off-by: Andreas Rheinhardt --- libavcodec/avpacket.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c index 0d9ddeee07..a7b0b6bd5d 100644 --- a/libavcodec/avpacket.c +++ b/libavcodec/avpacket.c @@ -127,7 +127,8 @@ int av_grow_packet(AVPacket *pkt, int grow_by) return AVERROR(ENOMEM); } - if (new_size + data_offset > pkt->buf->size) { + if (new_size + data_offset > pkt->buf->size || + !av_buffer_is_writable(pkt->buf)) { int ret = av_buffer_realloc(&pkt->buf, new_size + data_offset); if (ret < 0) { pkt->data = old_data;