Message ID | 20250105055750.1668721-39-eggert@cs.ucla.edu (mailing list archive) |
---|---|
State | New |
Headers |
Return-Path: <libc-alpha-bounces~patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8E8C73858D35 for <patchwork@sourceware.org>; Sun, 5 Jan 2025 06:15:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8E8C73858D35 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=cs.ucla.edu header.i=@cs.ucla.edu header.a=rsa-sha256 header.s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C header.b=OMYK3P4N X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail.cs.ucla.edu (mail.cs.ucla.edu [131.179.128.66]) by sourceware.org (Postfix) with ESMTPS id 2345F3858410 for <libc-alpha@sourceware.org>; Sun, 5 Jan 2025 05:59:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2345F3858410 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=cs.ucla.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cs.ucla.edu ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2345F3858410 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=131.179.128.66 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736056793; cv=none; b=LiSoDgHEtOoM6sySCE3X2kJgl25wzvlABw4t64+qZvDuBXS9slGdRdvmdHUnLf8p43UpgcblkT4VwzUlElEQBP3g+ynMs492nLCXPdmKKOnmnPW2vheNJmrsDJe08U+N+U/5dJYoQG3yBGfBi/wUwul8yKO4SD3XUN0uPo+0JrM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736056793; c=relaxed/simple; bh=u1HnbceFcdrmyzb6RjHzpslqbL+46YF1ijkZvBagIf8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=hEWjNiOrNyFMNYL0abUPDORExUMlVZgQ+AjYlrNPjN1ScXMqVkiyPueuZWEYUOG/lZc8j6LLZgEYyjlJqLTRqN7Q+Z7ekvCorx2ffejs38OiA9qgMtpwB7YJ+u0YPYtO+ctdwxwRUE3MOEJPgfa7zUO/idOl8prg986yqLY4y3U= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2345F3858410 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 9CE863C123843 for <libc-alpha@sourceware.org>; Sat, 4 Jan 2025 21:59:52 -0800 (PST) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id 0f7mmS7cPcsY; Sat, 4 Jan 2025 21:59:52 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 5B4603C123844; Sat, 4 Jan 2025 21:59:52 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu 5B4603C123844 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1736056792; bh=A6XbqXOj71AWjADXDp1rY7OXBgsB974gSMuso+7W8eI=; h=From:To:Date:Message-ID:MIME-Version; b=OMYK3P4NRb+09ZPqC0sPBJ7iZsnNhcYe8tTNEwQXAK6G3rmDyQRqWU7+cHNEC5Aak BoM7C6WEcQtu7bHnWGgQ7b3qmlzI6GR4vRnQ9YtKsrFIvo6zB3trbrumqccZU4F8sp HQG6DHrBJ+rwUa4OYcXcKNtFkS6ZLujAFOoqR0dr5U10yFpb9Y1fjvgiz8l+tBasGN HyffEXlLv3iwaOCM+DgAyOE0NdTk5agg2ZnXHOJIBD8ufcNx2zH65AlRkNWbVwlSVQ gx6eTgxueN7vyOJCu1PzkMxKTIlPd/iQe/Ingj9QJkDMQdh9r7fAKn8QMrmKk1f6x4 EzJWMNF+FGCSA== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id LMiy1zyQeVf7; Sat, 4 Jan 2025 21:59:52 -0800 (PST) Received: from wing.home (unknown [47.154.28.214]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id 4462A3C082EB9; Sat, 4 Jan 2025 21:59:52 -0800 (PST) From: Paul Eggert <eggert@cs.ucla.edu> To: libc-alpha@sourceware.org Cc: Paul Eggert <eggert@cs.ucla.edu> Subject: [PATCH 38/59] Avoid a malloc in __tzfile_read Date: Sat, 4 Jan 2025 21:57:13 -0800 Message-ID: <20250105055750.1668721-39-eggert@cs.ucla.edu> X-Mailer: git-send-email 2.45.2 In-Reply-To: <01207110-bd60-46ae-9c08-fb39c2011067@cs.ucla.edu> References: <01207110-bd60-46ae-9c08-fb39c2011067@cs.ucla.edu> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, GIT_PATCH_0, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list <libc-alpha.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/libc-alpha>, <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/libc-alpha/> List-Post: <mailto:libc-alpha@sourceware.org> List-Help: <mailto:libc-alpha-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/libc-alpha>, <mailto:libc-alpha-request@sourceware.org?subject=subscribe> Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org |
Series |
time: sync mktime from Gnulib
|
|
Checks
Context | Check | Description |
---|---|---|
redhat-pt-bot/TryBot-apply_patch | success | Patch applied to master at the time it was sent |
Commit Message
Paul Eggert
Jan. 5, 2025, 5:57 a.m. UTC
* time/tzfile.c (__tzfile_read): Avoid a malloc in the usual case, by reusing a stack buffer. --- time/tzfile.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/time/tzfile.c b/time/tzfile.c index 8efe5b2ec9..09ebc7d8ea 100644 --- a/time/tzfile.c +++ b/time/tzfile.c @@ -143,7 +143,7 @@ __tzfile_read (const char *file) static const char default_tzdir[] = TZDIR "/"; tzidx isstdcnt, isutcnt; FILE *f; - union { struct tzhead tzhead; tzidx tzidx_aligned; } u; + union { struct tzhead tzhead; tzidx tzidx_aligned; char tzfilename[64]; } u; tzidx charcnt; tzidx i; int trans_width = 4; @@ -180,13 +180,20 @@ __tzfile_read (const char *file) size_t tzdirlen = strlen (tzdir); tzdirlen -= tzdir[tzdirlen - 1] == '/'; size_t filelen = strlen (file); - new = malloc (tzdirlen + 1 + filelen + 1); - if (new == NULL) - goto ret_free_transitions; - char *newp = __mempcpy (new, tzdir, tzdirlen); - *newp++ = '/'; - __mempcpy (newp, file, filelen + 1); - file = new; + size_t absfile_size = tzdirlen + 1 + filelen + 1; + char *absfile; + if (absfile_size <= sizeof u.tzfilename) + absfile = u.tzfilename; + else + { + absfile = new = malloc (absfile_size); + if (absfile == NULL) + goto ret_free_transitions; + } + char *p = __mempcpy (absfile, tzdir, tzdirlen); + *p++ = '/'; + __mempcpy (p, file, filelen + 1); + file = absfile; } /* If we were already using tzfile, check whether the file changed. */