From patchwork Tue Nov 21 13:55:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 119355 Delivered-To: patch@linaro.org Received: by 10.80.225.132 with SMTP id k4csp5124627edl; Tue, 21 Nov 2017 05:56:20 -0800 (PST) X-Google-Smtp-Source: AGs4zMaJFpvpuUdav2maey8moJhsYNoG6/Dl1IN9p7NU0BAnbMi3/rL+C1bhwJk0PhO2TJwqR6oc X-Received: by 10.98.46.7 with SMTP id u7mr15400392pfu.37.1511272580287; Tue, 21 Nov 2017 05:56:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511272580; cv=none; d=google.com; s=arc-20160816; b=pvYJzUsT04BhgMlSsi8gQMQYfOeXnmaKsbHRCP2f6lUGHCbGL8opR5MxlqFs2zcm6C 7tTr6Sd+Ab2WSpkfJ8RrH4/JjKYtuSqtg8Mdo8xlxkAw146WRlIx+99DVfaLjsgVV7i0 YTDw6ojcp+FZGQGPw9vN4OB/0v/tdZpwvwLVIuYgI0E5MmyRSQbw1ZnrRyptHA/mGmZF utSrP7x4JMqjs/6ApfQCEwDGIqMvKMsdWgHFpfzxfyGquxkBqo/8JbCnLzII+AOsUMpL jSRxiknoSFNv+k8IaJBOEpf1bKz92AYu8lgk6d3BC7S6EH5YezJF7dYyxVYNN+5SflHA 3NrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:to:from:delivered-to :sender:list-help:list-post:list-archive:list-subscribe :list-unsubscribe:list-id:precedence:mailing-list:dkim-signature :domainkey-signature:arc-authentication-results; bh=WMfViEd83XDR2t97Smk+CYiaqB4Y4RCB9oHJYK169Z4=; b=sImzD739NgKkqcdRNpHVczGpqOerbuioBiq/fulJltO9Jh9sKp16N36R1YNKXY6J7p ITelJ5QH7Lrk0EAlloyvh/rwIwbtLp0km7kic4timdSJjBs/WOaa5wuvhIk6NfDYwnoK vtnTW0ydk4C/NM33FEOPQWJ3ifw5sfXGTCUp9+DIrYBpOdOXr6RDpiIK3fD8aoWwnxHy bOZtgg0azXCbhaJzpOmOcHmtfRrky228S6l98tmzhVz1bSc3X4XEAaNoDElmJR/CCPeE GlwX50fShYtz4lSQZONXOVqzgoE89nTfZvwVyyCkXhoaBtzTbmH5sFYKE4V5r7F+7iPo Dnxg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=GdDEL+dr; spf=pass (google.com: domain of libc-alpha-return-87359-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-87359-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id w5si3569018pgm.49.2017.11.21.05.56.19 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Nov 2017 05:56:20 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-return-87359-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=GdDEL+dr; spf=pass (google.com: domain of libc-alpha-return-87359-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-87359-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=xZc3bJuX10ZkVhkCl+kmPgvpZSTLsVS 1oKedFlSIdqcV56PokdZkybTNdswZQsHmsVHIYFQGMezR3W1Icj+UjA5zrWFQn8G K9Olb4lDNOMLWh8BKmUvionAso5dHDwBo8SFQQIRi2CU3viW+XDo36X+fUL5ya4H r17Qq9cGDE/Q= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id:in-reply-to :references; s=default; bh=+VhPVqiV9nl6LCVzVp2ydAhtEX4=; b=GdDEL +drTb/h2hTkqK7c4Vc0lw+WKr5MaFbEwQtNcHpay6wlEChKphHwnT4RiMn9tSB8z zMOnM2lfp/9ICCE+S9EASsl1crm2hqVXvFDbJD3HvXySswuLu7udo0wniZB1WUUn waiD+6jJBxuJ1BCVXZL0eNJMB4B4pjPMtJAKbg= Received: (qmail 44369 invoked by alias); 21 Nov 2017 13:55:47 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 44217 invoked by uid 89); 21 Nov 2017 13:55:46 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KB_WAM_FROM_NAME_SINGLEWORD, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-qk0-f196.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=WMfViEd83XDR2t97Smk+CYiaqB4Y4RCB9oHJYK169Z4=; b=JN1Q5PYtp08dJSIKIBVh3Gy3gPcAqEsrH0gSZ+zFhxPtgkwUaN82T74pJPBR0zCj7B VyHrPRo1gz5X3Sb0KLMz8fcouI29rQ/3iYZQ0pzaOTo+/MbGOlK+GM04MdRJTVElFEOJ e5ub9Z04ckVMbPjNCoyFxfKklfK/ZUBSjatIMG1u8Bu3TM0ravMI98PLGR3zGvUDSj06 hcanLZBW6ptVpddWqs/OOI8iXNysxamGtKoAHUzE0uKMiUIhv+/hR7qxGfw79HfpQPe3 VBhQEYgiWzISnR8IthOCApzj/L1R32Mv1kHgckyxdg009oJ2ubmHS7Nzi+Hpt5o1lMNY KRig== X-Gm-Message-State: AJaThX5SU1tS8DQsH8+SqlRwjwH2KT86CMlAaB/GVjG2zUYAFWkA8nYa GSxfnHZ4lx1U663COJLrXRa7DLTko7g= X-Received: by 10.55.215.221 with SMTP id t90mr5865535qkt.226.1511272543253; Tue, 21 Nov 2017 05:55:43 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 4/8] posix: Remove alloca usage on glob dirname Date: Tue, 21 Nov 2017 11:55:26 -0200 Message-Id: <1511272530-10936-5-git-send-email-adhemerval.zanella@linaro.org> In-Reply-To: <1511272530-10936-1-git-send-email-adhemerval.zanella@linaro.org> References: <1511272530-10936-1-git-send-email-adhemerval.zanella@linaro.org> This patch replaces the alloca/malloc usage for dirname creation by the char_array struct. Checked on x86_64-linux-gnu. * posix/glob.c (glob_in_dir): Remove alloca usage for fullname. Signed-off-by: Adhemerval Zanella --- ChangeLog | 2 ++ posix/glob.c | 28 +++++++++------------------- 2 files changed, 11 insertions(+), 19 deletions(-) -- 2.7.4 diff --git a/posix/glob.c b/posix/glob.c index 7c0df0b..c83954d 100644 --- a/posix/glob.c +++ b/posix/glob.c @@ -1197,7 +1197,6 @@ glob_in_dir (const char *pattern, const char *directory, int flags, int (*errfunc) (const char *, int), glob_t *pglob, size_t alloca_used) { - size_t dirlen = strlen (directory); void *stream = NULL; # define GLOBNAMES_MEMBERS(nnames) \ struct globnames *next; size_t count; char *name[nnames]; @@ -1229,32 +1228,23 @@ glob_in_dir (const char *pattern, const char *directory, int flags, } else if (meta == GLOBPAT_NONE) { - size_t patlen = strlen (pattern); - size_t fullsize; - bool alloca_fullname - = (! size_add_wrapv (dirlen + 1, patlen + 1, &fullsize) - && glob_use_alloca (alloca_used, fullsize)); - char *fullname; - if (alloca_fullname) - fullname = alloca_account (fullsize, alloca_used); - else + struct char_array fullname; + + if (!char_array_init_str (&fullname, directory) + || !char_array_append_str (&fullname, "/") + || !char_array_append_str (&fullname, pattern)) { - fullname = malloc (fullsize); - if (fullname == NULL) - return GLOB_NOSPACE; + char_array_free (&fullname); + return GLOB_NOSPACE; } - mempcpy (mempcpy (mempcpy (fullname, directory, dirlen), - "/", 1), - pattern, patlen + 1); - if (glob_lstat (pglob, flags, fullname) == 0 + if (glob_lstat (pglob, flags, char_array_str (&fullname)) == 0 || errno == EOVERFLOW) /* We found this file to be existing. Now tell the rest of the function to copy this name into the result. */ flags |= GLOB_NOCHECK; - if (__glibc_unlikely (!alloca_fullname)) - free (fullname); + char_array_free (&fullname); } else {