From patchwork Sat Apr 11 23:53:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 18891 Delivered-To: andriy.gelman@gmail.com Received: by 2002:ad4:45d0:0:0:0:0:0 with SMTP id v16csp1235325qvt; Sat, 11 Apr 2020 16:54:13 -0700 (PDT) X-Google-Smtp-Source: APiQypK3j2STISPID66xndTPCGaEZP+zJEzDIO78EcsgBrgoBxNz9qxFk9K/5M5Q7f9cJEBgCC99 X-Received: by 2002:a5d:5707:: with SMTP id a7mr11656410wrv.108.1586649253371; Sat, 11 Apr 2020 16:54:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586649253; cv=none; d=google.com; s=arc-20160816; b=bqRAbPXmvfMD3KLdauMGiHMIAi837swCNt+p5epKiVxkmLfcjoVEIfXclsnJQxKvDK nM0HZn3u9LfcfGdgk1cZXWJhNQuoUqZhYS1sQ3vfi4wdQ4uyqgXVPuljr3oLecauTdAg C9GXhRsRUbTjGBuNqrcqdsOEU9F/Ic6+YHhRzKC5k8IcOJkDM+veIx9brLnYi41hNUmu tqH6n7te44k7GmFGotEpfba9d+0JVlFYHTDexoAanlb5I9ELtV5kACXcU6YpCRHfKt0j liQJ2HiohLWXIUHNJ9r90DcBA0puTdOPKI78zwZsqztGCfy2G2Dnh4ayWzQfMB9ScGgW +STA== 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:in-reply-to:references:mime-version :dkim-signature:delivered-to; bh=SkA8SYjoLThdbP1+vOexCIsGImrQsea4JRTkjxsR7R4=; b=sz0MT37/LiO+JF6PlSLet/OoRfqtfkC1zgNEl8SrDH9PWmeRVQZoCl7Jz6mWgw2ei+ et838FdOEZCpoMt8zT0VhsHLEl2n34CShnSB+0+bL+ER4ibAgJgOFZ/1xSkeuJXDOxNB sYLqdb1oRx9jAthCDtSToW3ycr5cRGxj7DgHyWqIPrFXb6tOVnA6bVx81uOcnmXdO43l YOYZvoSitAzlJnpMUY9ZCj/EAWQnfTMsD80FKJTKN8n8Pxd0LLo51iSgCoIs10Ru3EBe aCvlbPX1BRZI/xJZhzNHyUPegihraR1AzGMXYAe0gb0JORsXJ0cFkjQiBTmrEtNKKEjL awXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=YcDHv13y; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a204si5976101wmf.31.2020.04.11.16.54.12; Sat, 11 Apr 2020 16:54:13 -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=@gmail.com header.s=20161025 header.b=YcDHv13y; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2806B68B753; Sun, 12 Apr 2020 02:54:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io1-f66.google.com (mail-io1-f66.google.com [209.85.166.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 66D8568B4EA for ; Sun, 12 Apr 2020 02:54:04 +0300 (EEST) Received: by mail-io1-f66.google.com with SMTP id i19so5767346ioh.12 for ; Sat, 11 Apr 2020 16:54:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=vdeIrJaqssFEf2WQNnsacXOUuUPuZQSIF1M9BWRkmdo=; b=YcDHv13yNTUZF6cJJ4oZlr8pNnsCra0lNbdM5jpW+myGlImc+rvKJuveBaDvU+DHtf pauvjEF48lFlgISA16x3EKJTenxootVH3/bnyD0zuz7Ia2zqdUGGLL/ZYS+9RwUlBdn0 hT+424/cduHeGKsiyQrCh2iSXtdhNKkt4N9HZAdvJS1g1RJCGeEqLrFbM2AMHtT7T73o iq0mzWfzNZO2t8xq1KyKCQngBJweH+P9NYAirwvI+Gs7OjXMFqR64HIpsIz36/MTem0L SIcoPx5XZq0B/9htp6ubeeSWNuIirpCEpja/0OIntp3+lWwdmfAoKF5MReY2wm+6W/4g KXTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=vdeIrJaqssFEf2WQNnsacXOUuUPuZQSIF1M9BWRkmdo=; b=DQOSibdVMlOVPUurv5yYie0kOLl3HtWpAsPPzxEnDwspWos7s27XT2UJYOB6wrafn7 /rOJyhhLZWA1HLG5c8Z8HdvxKh2lBj9FdDzpw5WotjtYr/xMl8J1QMjVszxlcDOFfWB/ HIulg4vElyIvIdewKFoYbfBh/mEhqWQ+AsYkF/XkiP59WOO+p1UmHWI/wwe3b3hup/Kh 80gREEXjAvZabc01TI92PBndj72EGCL0jiR0tLsUJgXYAwDyFtD3L18Wr1sp2RxL6JSS jVvvTOvtlme8C+MEzPr4fbotQX+vCr8FHNOwTWKdxcXsp95lv/M59Blj6RZSiYt2Euvr w0Hg== X-Gm-Message-State: AGi0Pub0SRc71hsawtLOVUB328jyT2Nh9tA/nupIr4XQ5b1T9eXwDEEz F3TbysZviVT+rhXU2ZZf0KCEHzVHR25O+2AsAQ6R3Q== X-Received: by 2002:a05:6602:12:: with SMTP id b18mr9815566ioa.91.1586649242667; Sat, 11 Apr 2020 16:54:02 -0700 (PDT) MIME-Version: 1.0 References: <20200405120305.GQ10055@michaelspb> In-Reply-To: From: Carl Eugen Hoyos Date: Sun, 12 Apr 2020 01:53:51 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH v3]lavu/mem: Make alloc array functions more similar to av_malloc 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: 4tjPaRRVMc9S Content-Length: 4931 Am So., 12. Apr. 2020 um 00:44 Uhr schrieb Carl Eugen Hoyos : > > Am So., 5. Apr. 2020 um 14:03 Uhr schrieb Michael Niedermayer > : > > > > On Sat, Apr 04, 2020 at 12:46:36AM +0200, Carl Eugen Hoyos wrote: > > > Hi! > > > > > > Attached patch makes the alloc array functions more similar to > > > av_malloc, depending on max_alloc_size instead of INT_MAX. > > > > > > Allows a work-around for ticket #7140 > > > > > > Please comment, Carl Eugen > > > > > mem.c | 8 ++++---- > > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > 507531ed6f0932834d005bc1dd7d18e762f158b2 0001-lavu-mem-Make-alloc-array-functions-more-similar-to-.patch > > > From 7ae240a9f7885130251031aba5d0764b11947fec Mon Sep 17 00:00:00 2001 > > > From: Carl Eugen Hoyos > > > Date: Sat, 4 Apr 2020 00:37:03 +0200 > > > Subject: [PATCH] lavu/mem: Make alloc array functions more similar to > > > av_malloc(). > > > > > > Do not limit the array allocation functions to allocations of INT_MAX, > > > instead depend on max_alloc_size like av_malloc(). > > > > > > Allows a workaround for ticket #7140. > > > --- > > > libavutil/mem.c | 8 ++++---- > > > 1 file changed, 4 insertions(+), 4 deletions(-) > > > > av_size_mult() may be faster > > New patch attached. And an actually working variant. Please comment, Carl Eugen From 643c501d6698d7d17e47a9f907165649f1446fa6 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Sun, 12 Apr 2020 00:36:30 +0200 Subject: [PATCH] lavu/mem: Make other alloc functions more similar to av_malloc(). Do not limit the array allocation functions and av_calloc() to allocations of INT_MAX, instead depend on max_alloc_size like av_malloc(). Allows a workaround for ticket #7140. --- libavutil/mem.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libavutil/mem.c b/libavutil/mem.c index 88fe09b179..e044374c62 100644 --- a/libavutil/mem.c +++ b/libavutil/mem.c @@ -183,23 +183,26 @@ int av_reallocp(void *ptr, size_t size) void *av_malloc_array(size_t nmemb, size_t size) { - if (!size || nmemb >= INT_MAX / size) + size_t result; + if (av_size_mult(nmemb, size, &result) < 0) return NULL; - return av_malloc(nmemb * size); + return av_malloc(result); } void *av_mallocz_array(size_t nmemb, size_t size) { - if (!size || nmemb >= INT_MAX / size) + size_t result; + if (av_size_mult(nmemb, size, &result) < 0) return NULL; - return av_mallocz(nmemb * size); + return av_mallocz(result); } void *av_realloc_array(void *ptr, size_t nmemb, size_t size) { - if (!size || nmemb >= INT_MAX / size) + size_t result; + if (av_size_mult(nmemb, size, &result) < 0) return NULL; - return av_realloc(ptr, nmemb * size); + return av_realloc(ptr, result); } int av_reallocp_array(void *ptr, size_t nmemb, size_t size) @@ -243,9 +246,10 @@ void *av_mallocz(size_t size) void *av_calloc(size_t nmemb, size_t size) { - if (size <= 0 || nmemb >= INT_MAX / size) + size_t result; + if (av_size_mult(nmemb, size, &result) < 0) return NULL; - return av_mallocz(nmemb * size); + return av_mallocz(result); } char *av_strdup(const char *s) -- 2.24.1