From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <ffmpeg-devel-bounces@ffmpeg.org> Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 1739D4E143 for <ffmpegdev@gitmailbox.com>; Mon, 28 Apr 2025 19:56:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 03E9D68A112; Mon, 28 Apr 2025 22:56:39 +0300 (EEST) Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CA675689BC3 for <ffmpeg-devel@ffmpeg.org>; Mon, 28 Apr 2025 22:56:31 +0300 (EEST) Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-3913b539aabso2853898f8f.2 for <ffmpeg-devel@ffmpeg.org>; Mon, 28 Apr 2025 12:56:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745870191; x=1746474991; darn=ffmpeg.org; h=user-agent:in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date:from:to:cc :subject:date:message-id:reply-to; bh=PF/oVHGH1s6N4vuOGm4dy/CSdPT5Yd2KH8UMXycgTEE=; b=QIhvvKf0iiKUw7snRKFxtMXlY9Nk+ToZ+xAeQQZ+ZIGTJYErBGjpO4iNyyLiqc9zW8 VrWrrQfUNt6MPzkVY03HKbta9rA4ot8Wbj5CwiRkSQpyCSEAb9VPIFiYn1cZgs9PWSsr mt0VjXclxRRHoFVHvnTUb13VyDO4dh4pUnp2odxxnBIVfXQu4gOljNUS8PPSqg6JuX3n +H5ZffR1ypXayM+4VbYtjyXn76kBNpNztzIj8PAyrCwX/Sw7yYjcWghJtrGpvPusth/s Tq2a9YDnQBmJy6GOOtOE6cDaGHNYT8VF6LnbZYjYQt7pfLhdL2+OYXa3K/0j75hCfvJ3 /ppQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745870191; x=1746474991; h=user-agent:in-reply-to:content-disposition:mime-version:references :mail-followup-to:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PF/oVHGH1s6N4vuOGm4dy/CSdPT5Yd2KH8UMXycgTEE=; b=V3zj4mkgG0hSCZl995WsD9negHEcYgKOWkOyD9b5OfiKYON/KL/RzpqoN3Ux9q2/l9 54gTfDnOGRb5HgiFljZ7xa0UzV/kBjtDCnW5Fu+GDl6zlsztoeJGhWsD9Q5AkJlaeeZC 8f5BeZjtJ9Xn5RO8w7jmoQ3+I5teDyTyijRVS3cGr9VQPJ4Ls2iG0Z5ljcU2CdBYdK73 2ix+oOFkk2vuEOhaC6zhx9iQALC1YBkIl9MZ+dmvI4g0pvzG1Q6EZnczzW2I6qzmq6by I9g4wu3wxnSoxbQ/rqTA9ggaqg6+cOhflqck1nlytxw5/IS3IPAIZ0x6b05Z5IP/5ex/ 91SQ== X-Gm-Message-State: AOJu0YwgVGtKrO3To8YfkyZhBAzE2+q9A3gQVa9LifjjiLUnu/Svf1wc dMye/fVj+licxOyKaIPCACpyZX7PR/Gua9hDMt+jH/TXRaDeJUSv+gdh2w== X-Gm-Gg: ASbGncs9reZs5HOed4n1jBGjOFVX9Yr8J2AErUSWcD9SuO3nZiCkgzUo2MJeitp/n5l aeDe9blEzOhYsS/lvOSPnEUhJgzBY85cVS9v6ldKrtfGCNUR6GGgeUxsJJLjRMiU8EM2PRqFJsf 8AyadOAwJmpRtpP3wift7QAN3IumKs3U4B17NlLUeVFAfTLfvmQypVK8oMLPTykPvFHUfL5s7bp P/mDlEPqRbBf4EZ2eUYsfz/NVJ8KRhzRVhdg9mq0VtnWCdrtGFLrDQAE30QJEA9Aa230vTZSVF+ 3H4lEiP5uJ3bsOtNWhumNKQrbkmhXFGjxw8hsanOm0c5Z6HRWCIhaHocDKwzPKg5ntiUaXUkVva BvVrU X-Google-Smtp-Source: AGHT+IFWCAJWAUK1EyVFjWKxBfkXIOD1V0ogtYHOEgQ5Y7Y00DcNYoSUV3CmBCg4B0JsJDLf4erhiQ== X-Received: by 2002:a05:6000:40cb:b0:390:f394:6271 with SMTP id ffacd0b85a97d-3a07ab85dc3mr7868024f8f.43.1745870190462; Mon, 28 Apr 2025 12:56:30 -0700 (PDT) Received: from mariano (dynamic-adsl-84-220-189-10.clienti.tiscali.it. [84.220.189.10]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a07dbd6ea1sm7953935f8f.7.2025.04.28.12.56.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 12:56:29 -0700 (PDT) Received: by mariano (Postfix, from userid 1000) id 91627BFCE8; Mon, 28 Apr 2025 21:56:28 +0200 (CEST) Date: Mon, 28 Apr 2025 21:56:28 +0200 From: Stefano Sabatini <stefasab@gmail.com> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Message-ID: <aA/dbPipiEq0ZPw1@mariano> Mail-Followup-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>, softworkz <softworkz-at-hotmail.com@ffmpeg.org> References: <pull.66.v6.ffstaging.FFmpeg.1745457192.ffmpegagent@gmail.com> <pull.66.v7.ffstaging.FFmpeg.1745623868.ffmpegagent@gmail.com> <1a4044ba238e9cdd13c8db56a344387748f64633.1745623868.git.ffmpegagent@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1a4044ba238e9cdd13c8db56a344387748f64633.1745623868.git.ffmpegagent@gmail.com> User-Agent: Mutt/2.1.4 (2021-12-11) Subject: Re: [FFmpeg-devel] [PATCH v7 02/13] fftools/textformat: Apply quality improvements X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org> List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe> List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel> List-Post: <mailto:ffmpeg-devel@ffmpeg.org> List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help> List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>, <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe> Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Cc: softworkz <softworkz@hotmail.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org> Archived-At: <https://master.gitmailbox.com/ffmpegdev/aA%2FdbPipiEq0ZPw1@mariano/> List-Archive: <https://master.gitmailbox.com/ffmpegdev/> List-Post: <mailto:ffmpegdev@gitmailbox.com> On date Friday 2025-04-25 23:30:57 +0000, softworkz wrote: > From: softworkz <softworkz@hotmail.com> > > Perform multiple improvements to increase code robustness. > In particular: > - favor unsigned counters for loops > - add missing checks > - avoid possible leaks > - move variable declarations to inner scopes when feasible > - provide explicit type-casting when needed > > Signed-off-by: softworkz <softworkz@hotmail.com> > --- > fftools/textformat/avtextformat.c | 85 ++++++++++++++++++++----------- > fftools/textformat/avtextformat.h | 6 +-- > fftools/textformat/tf_default.c | 8 ++- > fftools/textformat/tf_ini.c | 2 +- > fftools/textformat/tf_json.c | 17 ++++--- > fftools/textformat/tf_xml.c | 3 -- > fftools/textformat/tw_avio.c | 11 +++- > 7 files changed, 83 insertions(+), 49 deletions(-) > > diff --git a/fftools/textformat/avtextformat.c b/fftools/textformat/avtextformat.c > index 74d179c516..1939a1f739 100644 > --- a/fftools/textformat/avtextformat.c > +++ b/fftools/textformat/avtextformat.c > @@ -93,9 +93,8 @@ static const AVClass textcontext_class = { > > static void bprint_bytes(AVBPrint *bp, const uint8_t *ubuf, size_t ubuf_size) > { > - int i; > av_bprintf(bp, "0X"); > - for (i = 0; i < ubuf_size; i++) > + for (unsigned i = 0; i < ubuf_size; i++) > av_bprintf(bp, "%02X", ubuf[i]); > } > > @@ -137,6 +136,9 @@ int avtext_context_open(AVTextFormatContext **ptctx, const AVTextFormatter *form > AVTextFormatContext *tctx; > int i, ret = 0; > > + if (!ptctx || !formatter) > + return AVERROR(EINVAL); assert0? > + > if (!(tctx = av_mallocz(sizeof(AVTextFormatContext)))) { > ret = AVERROR(ENOMEM); > goto fail; > @@ -209,25 +211,26 @@ int avtext_context_open(AVTextFormatContext **ptctx, const AVTextFormatter *form > av_log(NULL, AV_LOG_ERROR, " %s", n); > av_log(NULL, AV_LOG_ERROR, "\n"); > } > - return ret; > + goto fail; > } > > /* validate replace string */ > { > - const uint8_t *p = tctx->string_validation_replacement; > - const uint8_t *endp = p + strlen(p); > + const uint8_t *p = (uint8_t *)tctx->string_validation_replacement; > + const uint8_t *endp = p + strlen((const char *)p); > while (*p) { > const uint8_t *p0 = p; > int32_t code; > ret = av_utf8_decode(&code, &p, endp, tctx->string_validation_utf8_flags); > if (ret < 0) { > AVBPrint bp; > - av_bprint_init(&bp, 0, AV_BPRINT_SIZE_AUTOMATIC); > + av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED); > bprint_bytes(&bp, p0, p - p0), > av_log(tctx, AV_LOG_ERROR, > "Invalid UTF8 sequence %s found in string validation replace '%s'\n", > bp.str, tctx->string_validation_replacement); > - return ret; > + av_bprint_finalize(&bp, NULL); I see no advantage in this, since it's adding dynamic allocation and the need to free which was previously not needed > + goto fail; > } > } > } > @@ -255,6 +258,9 @@ static const char unit_bit_per_second_str[] = "bit/s"; > > void avtext_print_section_header(AVTextFormatContext *tctx, const void *data, int section_id) > { > + if (section_id < 0 || section_id >= tctx->nb_sections) > + return; Given this is a check on the input data, we should probably make it fail with a log message, meaning we should also check the return value from the callee. Given this is not a public API I'm not against the assert though. [...] > int avtextwriter_create_file(AVTextWriterContext **pwctx, const char *output_filename) > { > + if (!output_filename || !output_filename[0]) { > + av_log(NULL, AV_LOG_ERROR, "The output_filename cannot be NULL or empty\n"); > + return AVERROR(EINVAL); > + } > + > IOWriterContext *ctx; > int ret; nit here and below: move declarations before actual code for stylistic consistency [...] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".