From patchwork Thu Jan 9 07:53:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: misc@atomas.com X-Patchwork-Id: 17273 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a05:6214:1865:0:0:0:0 with SMTP id eh5csp253606qvb; Wed, 8 Jan 2020 23:54:12 -0800 (PST) X-Google-Smtp-Source: APXvYqwU79q7LqLV+1g/wSyTg6cpGj7anxIr6W2v2+9P1r8PyixVv+CHkOE+ebYIXhgYmjyRbM4o X-Received: by 2002:aa7:d3cb:: with SMTP id o11mr9955444edr.145.1578556452335; Wed, 08 Jan 2020 23:54:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578556452; cv=none; d=google.com; s=arc-20160816; b=EuHfGFUDUWb89kbrXf3Ig4VjE+7upRIuKZ9dD6r8wFYqHLPgMnIqr6nU7NxbxfJnKs tRN01mt9sSn03BgqkV+BtT3PgG15c/+dCrMNwpFXU+IqrNilSxiEbWURZBzZEh+PbV2W INZ7VPI/uZej5pnYJ/3Ow562y6mXXUGzx4Vlum7uQzLdfKhS2fyQrQDDRmGfah0Ex0vR vDbPInvjt2M+xxTshll40OJY+CuwEiusXeHGH3sWM61kq5GMjZrT52QzMm+j6GNBNLSg 8JVZqnvZVJkfLikZRV3SZ2Qs2dsYdEawco+OMtjphbzREygmupvm593QI14/pMZqR49m F2xg== 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:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=kO1AEo1tgvuInLnC/vsoriXgDe4Y3lzEFE1Q1HhdN7s=; b=TmoWmKYHES3cZLgFv6qCj4mvzjHMfF/G8sl3ZBn7a0MGMlhZcS/BhkX3+yPZbRjZsY xhBrlZidGbGL+RYbWJ4GE5wB3Iw0Va23k9C6/om+oJjWnDJb19S8grSaIQ94iYdxe3xr qaDudQQFBqpbf+Gqm8H/VxAyXyx9YlpjbsIzrfxjh3hEMQ/Sh6ZL6AyZmjNKo/JpFBYr 0LeUtCurVtZ4GU0etcYJZhV8X64A0zG7BURbEzByrOeOBKHw9vZOHMQ+lQaIPt5cqOc8 b1824STd4WU0XvtpogCNYzb658R75e2I5Aw/EnVCYshd+ADy6zfsbLEADsLwBni1W4kZ eCyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@atomas-com.20150623.gappssmtp.com header.s=20150623 header.b=sMvE4aop; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id lu19si4088079ejb.80.2020.01.08.23.54.11; Wed, 08 Jan 2020 23:54:12 -0800 (PST) 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=@atomas-com.20150623.gappssmtp.com header.s=20150623 header.b=sMvE4aop; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0F2B968A59E; Thu, 9 Jan 2020 09:54:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f41.google.com (mail-qv1-f41.google.com [209.85.219.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 681A86880C7 for ; Thu, 9 Jan 2020 09:54:02 +0200 (EET) Received: by mail-qv1-f41.google.com with SMTP id m14so2596664qvl.3 for ; Wed, 08 Jan 2020 23:54:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atomas-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=1RUPMvjXK8T5mjKu1PktYdO4wvQFkBJKbNUBt6+AnKI=; b=sMvE4aopluK11hL+ykbY05BA2QfNjBB8oRIE1g7NeV1m41R9pDF+TAKWdKHPXeuHxx y7KsNCtgqVFy08dbip11vrXbYECn2/0hAhBBYXoUq2/R9aGMyDdQQweqXnEY0JVFX7wf Uv8srTjOaMniSmCxQZXKDDqAV6EUyTfMmYRUUquU4YrZ9AiP3FSFPqlYZNmbdbTHaiXf 7QZgP8MCH28MUbdvGi06YBA8elSuqL8LNnVXxz8RNl8j4ih+gmNLniMpgNxNM4gja3Bv YKWvQO2KYXY3pzKUwNMjmF8PGLWXGa/AOwUcaidrI8Kf8SarcUI+NWER+HSdZj4ri6zk D3Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=1RUPMvjXK8T5mjKu1PktYdO4wvQFkBJKbNUBt6+AnKI=; b=X5kREntoQHHL7IB7M/0rDunL4gd62jF2LEcAFSjs7a3MIBWDtVYw0mlfqTeBac4cRn KyeHQHhl4R7bVogP0y1m14o119iyITgoMDEPSA88VAJno1SlqyNiCjEOsrOdPc4lGcCX aPH/ZzUMTLqiLEFflPr7TMxXr5zeifDxBrnMWFweAMJYnx9I07UjLemEjFq8Xqd1UF/G k5GxGQlwB+XgB9HHqFSZHdSxNHRqst3ILKTfwvlr6UOtO1mJzzEMl8nj7BTiotP2Fz6k 7tn3Wx2Gigq0whfXskNWXJxRZWhBoBvzwNiO1KPyiIvKIqiAI2YLU/OXpsFJEDuR3H9L 9vTA== X-Gm-Message-State: APjAAAUK1H1ArApbiZv9MZyEyxF2C29cwPral2rkoBNJmH02fd5s4aKy JfWc8gd0R+DJ2hP4JYtMIMX/9mcmHaGIn8rTQ/J9Hh5hDSzDFw== X-Received: by 2002:ad4:5674:: with SMTP id bm20mr7883810qvb.88.1578556440355; Wed, 08 Jan 2020 23:54:00 -0800 (PST) MIME-Version: 1.0 From: misc@atomas.com Date: Thu, 9 Jan 2020 08:53:49 +0100 Message-ID: To: ffmpeg-devel@ffmpeg.org X-Content-Filtered-By: Mailman/MimeDel 2.1.20 Subject: [FFmpeg-devel] [PATCH] Fix bad ID3v2 tag length 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" X-TUID: A8xQ4+l5WVO6 Content-Length: 3018 (this time with the attached git-format patch !) The Id3v2 tag is set to a wrong size (14 bytes too large), when a CTOC frame is included. It makes decoders believe the first MP3 frame is inside the ID3v2 tag, and hence mungle the first mp3 frame. The code source uses a hardcoded "16" magic value that is incorrect. (it should be "2") This patch fixes this bug *without* using magic values. See: https://github.com/gbouthenot/mp3splitter-js/issues/2 https://github.com/openaudible/openaudible/issues/258 Thank you ! From 79e4fcd53e0bd322cc51b694af8a12adaa17efb4 Mon Sep 17 00:00:00 2001 From: Gilles Bouthenot Date: Wed, 8 Jan 2020 19:47:55 +0100 Subject: [PATCH] Fix bad ID3v2 tag length --- libavformat/id3v2enc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavformat/id3v2enc.c b/libavformat/id3v2enc.c index ee0c4b28a1..5d821ea4db 100644 --- a/libavformat/id3v2enc.c +++ b/libavformat/id3v2enc.c @@ -268,15 +268,15 @@ static int write_ctoc(AVFormatContext *s, ID3v2EncContext *id3, int enc) if ((ret = avio_open_dyn_buf(&dyn_bc)) < 0) return ret; - id3->len += avio_put_str(dyn_bc, "toc"); + avio_put_str(dyn_bc, "toc"); avio_w8(dyn_bc, 0x03); avio_w8(dyn_bc, s->nb_chapters); for (int i = 0; i < s->nb_chapters; i++) { snprintf(name, 122, "ch%d", i); - id3->len += avio_put_str(dyn_bc, name); + avio_put_str(dyn_bc, name); } len = avio_get_dyn_buf(dyn_bc, &dyn_buf); - id3->len += 16 + ID3v2_HEADER_SIZE; + id3->len += len + ID3v2_HEADER_SIZE; avio_wb32(s->pb, MKBETAG('C', 'T', 'O', 'C')); avio_wb32(s->pb, len);