From patchwork Fri Jul 14 14:52:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanley Lancaster X-Patchwork-Id: 72694 Return-Path: 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 274603858C54 for ; Fri, 14 Jul 2023 14:53:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 274603858C54 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1689346437; bh=pp0ip95/8dYgOyZFdQvPqP90jvczeTPhxwb8cmp5DmY=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=WK2WBUQ5lI1RUBENp7Emyhlew44/OR9QN2V9LAje09C4m+4nx//ISRLavE72i1LSy /UUTZpiNEUNxA6ME8LPDIJzg9iU3q0YmTWlcV/ra/AXu4wQk9tdkRQM00FoqAKkjdN mtDTOc/OiagGnlmC4f/uTve8dFXQ9dHmFmtzJHQg= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-io1-xd32.google.com (mail-io1-xd32.google.com [IPv6:2607:f8b0:4864:20::d32]) by sourceware.org (Postfix) with ESMTPS id 5C3833858CD1 for ; Fri, 14 Jul 2023 14:53:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5C3833858CD1 Received: by mail-io1-xd32.google.com with SMTP id ca18e2360f4ac-77a62a84855so78780139f.1 for ; Fri, 14 Jul 2023 07:53:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689346414; x=1691938414; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=pp0ip95/8dYgOyZFdQvPqP90jvczeTPhxwb8cmp5DmY=; b=VJuL/XJ7jDN/WzrSguswKUSCWEXK+ynTkgTedbOZiAOvg8NXQtclok1O87E7a2PoC8 0Hsc1Psoofu/q1o01+qP1qgos5jrf8W0SC3rfZ8Hb7hbsUoRcYLyxW/M2IwBZJS3GdHh vvd7qc/sx7gKzhF2HZrG7Id9VtBhTOJUmapbxzB7EMMDkEfgLOttlO5IuydeoxkMtUuL gJql5BoafLGkT8rhFvA0lDMoKDMEhv6fYaMXY9ar+o14mqNno+SgK/YouSp3DKlVa8Kg Xx6o7KaZ99oX4rg50NUhVXpN8mxnaFIBQmkrzn/voE77UhUki2qFT6rOJCWI2YYBMJ39 dv1g== X-Gm-Message-State: ABy/qLYQitu4Fm8x0bWGLy/RB+8bkHoY3FCKdkQDrm0ZrH8xPDslaEfV 3K8Kqs5M/ImGkaTblGDtAVkoB/V0n00= X-Google-Smtp-Source: APBJJlFzn2aBma9Lr8fA56b3jmhMX/P6F0iNvpv34BzcJI3wFgAmiprbDEAJ6QTqyKfvCteA+p0ksQ== X-Received: by 2002:a6b:d608:0:b0:787:a73:b411 with SMTP id w8-20020a6bd608000000b007870a73b411mr3868317ioa.17.1689346414434; Fri, 14 Jul 2023 07:53:34 -0700 (PDT) Received: from slancast.remote.csb ([69.71.12.214]) by smtp.gmail.com with ESMTPSA id ee14-20020a056638292e00b0042ad6abe0bbsm2712576jab.20.2023.07.14.07.53.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Jul 2023 07:53:33 -0700 (PDT) To: libc-alpha@sourceware.org Cc: Stanley Lancaster Subject: Fix %Z parsing in strptime [BZ #16088] Date: Fri, 14 Jul 2023 09:52:25 -0500 Message-Id: <20230714145224.1456633-1-lancasterharp@gmail.com> X-Mailer: git-send-email 2.39.3 MIME-Version: 1.0 X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Stanley Lancaster via Libc-alpha From: Stanley Lancaster Reply-To: Stanley Lancaster Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" --- time/strptime_l.c | 5 ++++- time/tst-strptime.c | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/time/strptime_l.c b/time/strptime_l.c index 85c3249fcc..5954015c4e 100644 --- a/time/strptime_l.c +++ b/time/strptime_l.c @@ -770,9 +770,12 @@ __strptime_internal (const char *rp, const char *fmt, struct tm *tmp, break; case 'Z': /* Read timezone but perform no conversion. */ + /* we recognize the format [-+a-zA-Z0-9]{3,} */ while (ISSPACE (*rp)) rp++; - while (!ISSPACE (*rp) && *rp != '\0') + + const char* stop_rp = rp + 3; + while (((*rp >= 'A' && *rp <= 'Z') || (*rp >= 'a' && *rp <= 'z') || (*rp >= '0' && *rp <= '9')) && (rp < stop_rp) && *rp != '\0') rp++; break; case 'z': diff --git a/time/tst-strptime.c b/time/tst-strptime.c index 3dae9e0594..31d6945ef1 100644 --- a/time/tst-strptime.c +++ b/time/tst-strptime.c @@ -38,6 +38,7 @@ static const struct { "C", "03/03/00", "%D", 5, 62, 2, 3 }, { "C", "9/9/99", "%x", 4, 251, 8, 9 }, { "C", "19990502123412", "%Y%m%d%H%M%S", 0, 121, 4, 2 }, + { "C", "1999CST0502123412", "%Y%Z%m%d%H%M%S", 0, 121, 4, 2 }, { "C", "2001 20 Mon", "%Y %U %a", 1, 140, 4, 21 }, { "C", "2001 21 Mon", "%Y %W %a", 1, 140, 4, 21 }, { "C", "2001 21 Mon", "%2000Y %W %a", 1, 140, 4, 21 },