From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.5 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 011FEC433E1 for ; Thu, 2 Jul 2020 15:06:34 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 85853206E2 for ; Thu, 2 Jul 2020 15:06:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="kUwFGL/w" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 85853206E2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 11F8D16E9; Thu, 2 Jul 2020 17:05:42 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 11F8D16E9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1593702392; bh=ef4IRCrG5LRI+9TTl0mjXUAljJwhIoJuPJ5EJFvehiE=; h=Subject:To:References:From:Date:In-Reply-To:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=kUwFGL/w9dWzBsQFTdopJV8dcQFKRhQ8M0XjsCz5p0udQ91SNzAtI4RO3jcILq5FE G6vTpb9kZ39LOblC+bNLcen1289koDVWAHnXB+vY9BxQtzib7it5HI/T/Ec7d07Fdg SM1t9SiMkPgNUNNDqgzO/E0wyjhWlEE7x0QjdRkU= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id E4574F80247; Thu, 2 Jul 2020 17:04:39 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id C9B63F80252; Thu, 2 Jul 2020 17:04:38 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 5F7B6F80247 for ; Thu, 2 Jul 2020 17:04:31 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 5F7B6F80247 IronPort-SDR: W7txVLkIEn0J/dwR/i4xjyM3/YKKTbvMq4HNsn5Orvo2FYiY3sJXG4SI6oWPBtaaynn851700j docXrwVCuoCQ== X-IronPort-AV: E=McAfee;i="6000,8403,9670"; a="208444085" X-IronPort-AV: E=Sophos;i="5.75,304,1589266800"; d="scan'208";a="208444085" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jul 2020 08:04:27 -0700 IronPort-SDR: TPoOZLKWWscAdeq43MEnPjQ/PY0uq4smMb7EGrpSdmGfBg8yH7+mpWHT5LV+B8GJ14TPDVJ+nM cMbaa1O7+Y7w== X-IronPort-AV: E=Sophos;i="5.75,304,1589266800"; d="scan'208";a="425976201" Received: from pmaziarx-mobl.ger.corp.intel.com (HELO [10.249.153.178]) ([10.249.153.178]) by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Jul 2020 08:04:25 -0700 Subject: Re: [PATCH alsa-lib 8/8] topology: Make buffer for saving dynamic size To: Pierre-Louis Bossart , alsa-devel@alsa-project.org References: <1593083026-7501-1-git-send-email-piotrx.maziarz@linux.intel.com> <1593083026-7501-8-git-send-email-piotrx.maziarz@linux.intel.com> From: Piotr Maziarz Message-ID: <6b738835-3d9d-ae99-0ebb-b8c0215fb4bc@linux.intel.com> Date: Thu, 2 Jul 2020 17:04:22 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Cc: cezary.rojewski@intel.com, amadeuszx.slawinski@intel.com X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" On 2020-06-25 16:31, Pierre-Louis Bossart wrote: > > > On 6/25/20 6:03 AM, Piotr Maziarz wrote: >> Some fields can exceed size limit, e.g. private data has no size >> restriction. Therefore it needs to be dynamically increased. >> >> Signed-off-by: Piotr Maziarz >> --- >>   src/topology/save.c | 36 ++++++++++++++++++++++++++++++------ >>   1 file changed, 30 insertions(+), 6 deletions(-) >> >> diff --git a/src/topology/save.c b/src/topology/save.c >> index 4ecf86c..d6ee8b6 100644 >> --- a/src/topology/save.c >> +++ b/src/topology/save.c >> @@ -19,22 +19,43 @@ >>   #include "tplg_local.h" >>   #define SAVE_ALLOC_SHIFT    (13)    /* 8192 bytes */ >> +#define PRINT_BUF_SIZE        (1024) >> +#define PRINT_BUF_SIZE_MAX    (1024 * 1024) >>   int tplg_save_printf(char **dst, const char *pfx, const char *fmt, ...) >>   { >>       va_list va; >> -    char buf[1024], *s; >> -    size_t n, l, t, pl; >> +    char *buf, *s; >> +    size_t n, alloc_size = PRINT_BUF_SIZE, l, t, pl; >> +    int ret = 0; >> + >> +    buf = malloc(alloc_size); >> +    if (!buf) >> +        return -ENOMEM; >>       if (pfx == NULL) >>           pfx = ""; >> +again: >>       va_start(va, fmt); >> -    n = vsnprintf(buf, sizeof(buf), fmt, va); >> +    n = vsnprintf(buf, alloc_size, fmt, va); >>       va_end(va); >> -    if (n >= sizeof(buf)) >> -        return -EOVERFLOW; >> +    if (n >= PRINT_BUF_SIZE_MAX) { >> +        ret = -EOVERFLOW; >> +        goto end; >> +    } > > what this patch does is change the allocation limit from 1KB to 1MB, but > the data still has no size restriction. At what point do we decide to > throw an error? > If needed size is bigger than PRINT_BUF_SIZE_MAX there will be an error thrown so I don't know what should I change here. Or do you mean that private data size in binary should be restricted?