From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id F30D164888 for ; Wed, 30 Dec 2020 11:28:17 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C14C820111 for ; Wed, 30 Dec 2020 11:27:47 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id AF7A520106 for ; Wed, 30 Dec 2020 11:27:46 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 748F2446CB for ; Wed, 30 Dec 2020 11:27:46 +0100 (CET) From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= To: pbs-devel@lists.proxmox.com Date: Wed, 30 Dec 2020 11:27:41 +0100 Message-Id: <20201230102741.152274-1-f.gruenbichler@proxmox.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.024 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pbs-devel] [PATCH proxmox] time: fix parsing non-full-hour TZ offsets X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Dec 2020 10:28:18 -0000 and add a test case to avoid regressions in the future. Signed-off-by: Fabian Grünbichler --- reported on forum: https://forum.proxmox.com/threads/backup-not-working-anymore.78406/#post-359935 proxmox/src/tools/time/mod.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/proxmox/src/tools/time/mod.rs b/proxmox/src/tools/time/mod.rs index f7ae84f..31174bd 100644 --- a/proxmox/src/tools/time/mod.rs +++ b/proxmox/src/tools/time/mod.rs @@ -270,7 +270,7 @@ pub fn parse_rfc3339(input_str: &str) -> Result { let hours = check_max(digit(20)? * 10 + digit(21)?, 23)?; expect(22, b':')?; - let mins = check_max(digit(23)? * 10 + digit(24)?, 23)?; + let mins = check_max(digit(23)? * 10 + digit(24)?, 59)?; let offset = (hours * 3600 + mins * 60) as i64; @@ -385,3 +385,16 @@ fn test_gmtime_range() { gmtime(upper + 1).expect_err("gmtime should fail for years not fitting into i32"); } + +#[test] +fn test_timezones() { + let input = "2020-12-30T00:00:00+06:30"; + let epoch = 1609263000; + let expected_utc = "2020-12-29T17:30:00Z"; + + let parsed = parse_rfc3339(input).expect("parsing failed"); + assert_eq!(parsed, epoch); + + let res = epoch_to_rfc3339_utc(parsed).expect("converting to RFC failed"); + assert_eq!(expected_utc, res); +} -- 2.20.1