From patchwork Mon May 18 03:30:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 19729 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 B7CB544AA83 for ; Mon, 18 May 2020 06:30:51 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 846A1688187; Mon, 18 May 2020 06:30:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 73692680890 for ; Mon, 18 May 2020 06:30:44 +0300 (EEST) Received: by mail-wm1-f65.google.com with SMTP id m185so3720532wme.3 for ; Sun, 17 May 2020 20:30:44 -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:mime-version :content-transfer-encoding; bh=xujwmijfUjs6zTBrSskEqpuWFep34mM/I7V55QcaHiE=; b=l9FtdmBRzZMOBhX8/c6M4C/vqeolvq9uZfvFDgbwun++OcNro0sRurpP2y2sb5wKT7 hOlnFOV1041qTpOnnQ+bO2hH5lfgwizZbJNktaT1YAULM7M8R/dMScFB3R13TNlL/yQ3 fHa5v9t8bIBIb1I7358d0trc8QO0r95rFYAlzAMDsw48vhr59pAZSNqxN3EKhgH5Wtdz DEX+Uv7YOIiOkAmGrbjJGpR/kZQDL4dDDyy5uz0UPOIGpGpCjN8rKSWycBeDwIYUTFZa JBU0Hx7//Y1JZplGP/TZZbz+4/KVjoy7AE9Cmz1me4sbJIiF3xKef88Peu68MjjI5rIi 8Erw== 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:mime-version :content-transfer-encoding; bh=xujwmijfUjs6zTBrSskEqpuWFep34mM/I7V55QcaHiE=; b=fYNqgZ6ImtSGmMLSpm8Kqr28MfW4RDEGEnffqZ8jKqzEgxWjkMRUlgRRFTItO8OFAB avv8KQgmZpk4ggGJkQzzzpNK00/HrR+TK0ksZERJKdjLE1FrI4X3pCYhD71KrIk8A4HM GXIU4WTNo/PXUqJrbYYI1+ts/Z7qjOm4J7zfj8xAz1Ht00Z8HFIyAufDN04mEs9E+v/2 UjtyAwevlyCchEq2ohchqqwC2FHJb3Ho9M/vLqZOKCAnRAqEA8GGXhCqUx7rmOgvBa7f 9D/CrBEhVXsq5k8B+h/ywD+6SE4XYVA5kzXxNW5u//CpkGtvfsHl9m2Q7RcYAXB5YsG2 IDnA== X-Gm-Message-State: AOAM532Daw96+xrtRMDC5YbDxjPcvZlXr5DMOkJD9BNw+ZpR7BPbnOhJ u36qujqBKT/TjiiLP6BHcT/OXwLm X-Google-Smtp-Source: ABdhPJymtjew0Mz+PZnOrrQvr9o1bLInktjRzg/TA06BC7DbyJOzW5sREpu5Ju0RYq7HyAJpBx/z5g== X-Received: by 2002:a05:600c:2043:: with SMTP id p3mr16433652wmg.187.1589772643560; Sun, 17 May 2020 20:30:43 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1ab57.dynamic.kabel-deutschland.de. [188.193.171.87]) by smtp.gmail.com with ESMTPSA id a21sm1011151wmm.7.2020.05.17.20.30.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 May 2020 20:30:42 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 18 May 2020 05:30:29 +0200 Message-Id: <20200518033033.27347-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/5] avformat/webmdashenc: Avoid allocation for parsing a number 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" In order to parse a number from a string, the WebM DASH manifest muxer would duplicate (via heap-allocation) the part of the string that contains the number, then read the number via atoi() and then free the duplicate again. This has been replaced by simply using strtoll() (which in contrast to atoi() has defined behaviour when the number is not representable). Signed-off-by: Andreas Rheinhardt --- libavformat/webmdashenc.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/libavformat/webmdashenc.c b/libavformat/webmdashenc.c index 465485c90c..05015a08c1 100644 --- a/libavformat/webmdashenc.c +++ b/libavformat/webmdashenc.c @@ -425,18 +425,6 @@ static int write_adaptation_set(AVFormatContext *s, int as_index) return 0; } -static int to_integer(char *p, int len) -{ - int ret; - char *q = av_malloc(len); - if (!q) - return AVERROR(ENOMEM); - av_strlcpy(q, p, len); - ret = atoi(q); - av_free(q); - return ret; -} - static int parse_adaptation_sets(AVFormatContext *s) { WebMDashMuxContext *w = s->priv_data; @@ -483,7 +471,7 @@ static int parse_adaptation_sets(AVFormatContext *s) return ret; q = p; while (*q != '\0' && *q != ',' && *q != ' ') q++; - as->streams[as->nb_streams - 1] = to_integer(p, q - p + 1); + as->streams[as->nb_streams - 1] = strtoll(p, NULL, 10); if (as->streams[as->nb_streams - 1] < 0 || as->streams[as->nb_streams - 1] >= s->nb_streams) { av_log(s, AV_LOG_ERROR, "Invalid value for 'streams' in adapation_sets.\n");