From patchwork Tue Apr 12 08:27:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 35289 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:671c:b0:7c:62c8:b2d1 with SMTP id q28csp1457997pzh; Tue, 12 Apr 2022 01:28:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJynYUB8RnXQspfW0sOz2rh1BWLPcKbCVIBji2GD11z/mjbtzMe+Ri6GLusXB2p8opzwsnOJ X-Received: by 2002:a17:907:94ca:b0:6da:b785:f067 with SMTP id dn10-20020a17090794ca00b006dab785f067mr33572410ejc.654.1649752090904; Tue, 12 Apr 2022 01:28:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649752090; cv=none; d=google.com; s=arc-20160816; b=wiZAnaF4pYTaZp7VFyqPjbGhqOXGaeqq2b8umBEjYzxLsng8TjwelCn0BBUPyfHxk9 W+bUG0BxmepSZI0K1NnMXCzr+gvyjrGmeeUNmePihGAF6Kl8yOcabgJfvuAkHF3vjHwT 8EwEC2kKc+tsCUI8lBK/UDG50bVFGQAnnbrKEehXLEmmNwy/TXAj06T0VK1MjBj4aas8 Z/wBX3V8Dv18yHE+GulBxlo8/Fh217rmTVzeqFL+3NTpal80WgYAb7ohA6fSRzBVTrnM SiRLs6bmWgL4aEsf6zKrA/0fXxKmkZbCdSnYo99afNCUW/L8ShzbQe5g/pqweYo9fyx8 nR6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:date:to:from:message-id :dkim-signature:delivered-to; bh=3kBbZ/MHdAs57EkqBmlWxYS1VB7Z+KPz2HIV34k4+tQ=; b=WlYCowGbweZV3yupm15yO9j/bJpLlgJ10PCeWzolC3ej2vAPqy5K+9Lkn2WGTvlKb8 p6CJYSa5BE/LOMFa/jnGSS/QPaszdE88iaUP5pyeXinwS/Gz0cuMa2pTJMltohE9t7Fk 5dCbmA/Yi8fSkm0tPMcmYFrYzfJxOe0+mp6CO1R/7TwRq+3nmxSaWjCI/on49PmMqQgD D7C4AXMgXWh7i4h8ZNN9Qt+tHFpRzxJ+TE2oFhZmo7UsbWYUdTPHDsPQ56mnwRDsnwQe fcnoLRpK4xl2tMXCfrQdJ6nFPeNu20Z2DwCULElGcCnS1EdGGIu9bVwzUHOETVuOucFz Y8Xw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=YtxcVi5t; 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=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id jv3-20020a170907768300b006e8aec16f26si1133438ejc.787.2022.04.12.01.28.10; Tue, 12 Apr 2022 01:28:10 -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=@foxmail.com header.s=s201512 header.b=YtxcVi5t; 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=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2A53E68B3A7; Tue, 12 Apr 2022 11:28:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-239.mail.qq.com (out203-205-221-239.mail.qq.com [203.205.221.239]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F12FA68AF91 for ; Tue, 12 Apr 2022 11:28:00 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1649752077; bh=Z18aC0Wp2gWqqvxhON9ecOWcU7HZHa6m67i4Wur1F+0=; h=From:To:Cc:Subject:Date; b=YtxcVi5tmEOM0PHuT46ir+f/Pza1bVtXm0C3QXNgrS6fTzCjb3zPxKgbE75jqpz++ sEM9APwfgpdNQNM9QqA31pybyQDz8sxetS6b3zv9pwG+kuqiMxKhuYet45B2LdqYk0 ndNLWNNm7YinQdqFmlnopPxMfu2G2BrSLruSedFE= Received: from ZHILIZHAO-MB2.tencent.com ([113.108.77.68]) by newxmesmtplogicsvrsza7.qq.com (NewEsmtp) with SMTP id 6F72F83C; Tue, 12 Apr 2022 16:27:55 +0800 X-QQ-mid: xmsmtpt1649752075tke56f1nl Message-ID: X-QQ-XMAILINFO: M6lqjKFHeg8FFxxnYwBeB5Y60J8OsJhJMLfogaAiVGrsfkEU2ZI/Qc9Wy6Qe1M xT92kPQsuQMjXLyjX0uslJSfdbZf8Wj7G8uYOlP3YkIAPEASwnUL1NiUgt3DY2cPaE3gQWSx9YGd /KzvSpuH20ZXpNBvlSHrsXyXmV17+Zm6wh5pX+5cATJCq5vwVhgaj/K5bvYX4mwBZ2u61aLUYZCe TSuPZCq/+skW21owMJ004tK/LHbkZ6C8Q/Uyv7bYZZKsoyc1twUV9dbeN5zKFwibYTUYSOy2sF+U rqe+GxzWVqtr4JgQdmMYnWRf7qYjusrMVmrbkrwf2GLfIGyIbGm+vJWdoeG5P9l0edFFIW3fZwO4 cG8aWyTlMZh/J3P06xpkdHu2ITABh0X552OGbZ+K2hwn+Y4BqUl68IiVYdTgi1AjDnQ3Q1tXMfuk yGoLQDTE1MZMm1xEY0cZwOpHW27D2aaG2cTlZ3MH+LweenvoTek+yakNSzbh6XjkaY+Zyn9vzcVx F3gBQlxDNh7ay7yICNspLbdFbzsBZYgTmVdSzVh/E+LWlSl7+qA4mbhkxEg61gYu89CznbmCsRHt MGd2kvP2p3IdArf3w/iZQ+IzaojAaI88YpwGl8uGIyZ0lUKbphDzsgGM9xb5ZfKWjNCG73l9/p+B DnzJ93vAMxKJK8tNMJTHHzGR8qsWnieG3vRpevUDChJ++zL9SCalDqwop7fxEO3ReTQ7ztOJdiZt bn+SF/xeR2kvtwMmUR5s9h724zKP9hkxqJkSpIIrlIA0HAh55dKiHoewEkI50dzFWAdg58m2xRwc d1E/9bs0w3AN+/VLEbHhDvU5422iBvonLtBHRo5HsVogaD7ciD8Lh0ij1rY2/mHouMihSVbTFWIp +qas2ruxU+6s3IjW2qJGpF2pt0PtbIsD6qMNY5u4TzsWBGHFwO4RlHRlmjwrkSp/1wp2pA866V4l Qm2SWTd7hTwABT4X4c/A== From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Tue, 12 Apr 2022 16:27:50 +0800 X-OQ-MSGID: <20220412082750.44825-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH RFC] avformat/hls: check IV size inside EXT-X-KEY X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: B/el1Px+Wgn8 IV should always be 128 bits. If the IV attribute was truncated inside EXT-X-KEY, padding on the left which is the same as when using sequence number as IV. --- I'm not sure which method is better: do padding or just return AVERROR_INVALIDDATA? libavformat/hls.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavformat/hls.c b/libavformat/hls.c index 83ff4cc607..a7b632c20e 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -810,7 +810,13 @@ static int parse_playlist(HLSContext *c, const char *url, if (!strcmp(info.method, "SAMPLE-AES")) key_type = KEY_SAMPLE_AES; if (!av_strncasecmp(info.iv, "0x", 2)) { - ff_hex_to_data(iv, info.iv + 2); + int n = ff_hex_to_data(iv, info.iv + 2); + if (n < sizeof(iv)) { + av_log(c->ctx, AV_LOG_WARNING, + "Incomplete IV %s, padding on the left\n", info.iv); + memmove(iv + sizeof(iv) - n, iv, n); + memset(iv, 0, sizeof(iv) - n); + } has_iv = 1; } av_strlcpy(key, info.uri, sizeof(key));