From patchwork Wed Mar 17 16:32:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 26429 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 E093944BA1E for ; Wed, 17 Mar 2021 18:32:42 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C8F5968B0A8; Wed, 17 Mar 2021 18:32:42 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1C65E68B097 for ; Wed, 17 Mar 2021 18:32:36 +0200 (EET) Received: by mail-ej1-f54.google.com with SMTP id lr13so3613782ejb.8 for ; Wed, 17 Mar 2021 09:32:36 -0700 (PDT) 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:reply-to :mime-version:content-transfer-encoding; bh=mi2siHozXyoiiTlc4bAC+PCHjRgke8dYakNSakG15us=; b=F4rqB0v8PsLw7JQhkSFpQtNNJo4yshNVdnYZ42FHfPGlKP9pRer3eWqtYakD8FRxCy y6dPw59RqiFK7zCbcusn7PWtJ5BSeuzxiJCAcSgLJ/HhCp1j3BmRGHZ7MkvsIY4YWORI /j+Tps7lvmkmL1kq6iJo7OeWJD9sgW+iib822AmvuVKbcvi9gZIMJ6gfxtsWhh0+IzLf Q3PMRjH3SACbp/Bz8zVslsiebQRFy9EBdDrWnHo0C/r4mpNH8XmNMJYgav1UWsXnTHpX Uht5qnjQViWTSOuOs48HqXBALa0lP5vV+0NdXxyah5VdQtm6NUwRsdNyevpF4R6OscU3 HTqg== 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:reply-to:mime-version:content-transfer-encoding; bh=mi2siHozXyoiiTlc4bAC+PCHjRgke8dYakNSakG15us=; b=tcABugyWUJHu1kzRNvtU7of7eESCWea37OR+z1QW/fFAbWF4Qt4CR8PlfCEen5BgMP WwMprEKWsog14e5OA6EXvvruuUtiWLzpfbpL4vBMNk3C5quiOywvCNxNrxiGwIK42E5u gWZNmvwHY2KQo1ifnReNHBfy8QPyn/Wx9tg3GGPHodJkZbjtbWk6WZo4dYvF4MzHMRS4 q5fVYjaMI9NGLgA2vXMPfZuVmC/lfBFcwZebuPTjSwVTiOiNM06P++LT8SE/g7uAKM4f B+CvMdXMZqvWKTtV4u8Iffr2PGNivmK3Nkprsqns6pITq+xw8hmX4WrVyxhIUKUPBNfR fymQ== X-Gm-Message-State: AOAM533U5HBgHsd/KN3t8Sj0E4VBnpP8zig4y9cmDEwuIYF/RTGKALc9 JXa03Sf4qrxIQtsLw8zWOyVCRp9uannH4Q== X-Google-Smtp-Source: ABdhPJzpfWQrqTE6Mcv1C2/O5WqodPdvgIPvo9QdfU1k8AxUc1tJ+WTgQKpyoZe8nkdAauyoWAUuaQ== X-Received: by 2002:a17:906:f9db:: with SMTP id lj27mr36760788ejb.399.1615998755345; Wed, 17 Mar 2021 09:32:35 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc08960.dynamic.kabel-deutschland.de. [188.192.137.96]) by smtp.gmail.com with ESMTPSA id gx2sm6518382ejc.82.2021.03.17.09.32.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 Mar 2021 09:32:34 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Mar 2021 17:32:02 +0100 Message-Id: <20210317163202.672493-3-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210317163202.672493-1-andreas.rheinhardt@gmail.com> References: <20210317163202.672493-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/pngdec: Improve decoding text chunks 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" By checking immediately whether the first allocation was successfull one can simplify the cleanup code in case of errors. Signed-off-by: Andreas Rheinhardt --- libavcodec/pngdec.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index 21e79a24a7..813f16692c 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -539,12 +539,13 @@ static int decode_text_chunk(PNGDecContext *s, uint32_t length, int compressed, text_len = data_end - data; } - kw_utf8 = iso88591_to_utf8(keyword, keyword_end - keyword); txt_utf8 = iso88591_to_utf8(data, text_len); if (compressed) av_bprint_finalize(&bp, NULL); - if (!(kw_utf8 && txt_utf8)) { - av_free(kw_utf8); + if (!txt_utf8) + return AVERROR(ENOMEM); + kw_utf8 = iso88591_to_utf8(keyword, keyword_end - keyword); + if (!kw_utf8) { av_free(txt_utf8); return AVERROR(ENOMEM); }