pimutils / pimutils/vdirsyncer

Missing validation check for TZOFFSETTO and TZOFFSETFROM

Open
#850 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.9k
Forks
185
Avg merge
11h 49m
Merged PRs (30d)
1

Description

Hello,

Thank you for your work on vdirsyncer and your time. Pimutils is an awesome project!

The issue starts with a question. If the answer to this question is no, you can happily stop reading and save yourself some time. I believe that vdirsyncer should validate data it has been fed, refusing to synchronize if it is not RFC compliant: this avoids propagating invalid data around. If however you believe that this is the client/server's job and not the sync tool's job, then this issue's point is moot.

Problem: vdirsyncer will synchronize an event where the VTIMEZONE component is missing the TZOFFSETTO and TZOFFSETFROM sub-components. If importing such an event into vdirsyncer, using e.g. khal (issue about it) to a server that also does not check for this (issue about it), then the sync will happen without any problems. When syncing back with another, stricter, client (e.g. Davx⁵), the event causes a failure.

I will happily provide any additional useful information. Thank you again for your time and work!

Things to include in your bugreport:

  • Your vdirsyncer version: vdirsyncer, version 0.16.9.dev0+gb5dd092.d20200713
  • server: davical, 1.1.9.3
  • Your Python version: 3.8.5
  • Your operating system: GNU/Linux, Arch Linux
  • Your config file:
[general]
status_path = "/home/sparrowhawk/.local/var/lib/vdirsyncer/status/"
[pair calendars]
a = "calendars_local"
b = "calendars_remote"
collections = ["from b"]
conflict_resolution = "b wins"
metadata = ["color", "displayname"]

# Storages
[storage calendars_remote]
type = "caldav"
url = "https://caldav.xxx/caldav.php/xxx/"
username = "xxx"
Password = "xxx"

[storage calendars_local]
type = "filesystem"
path = "/home/sparrowhawk/.local/var/lib/vdirsyncer/calendars/"
fileext = ".ics"

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source file, test, or entry point is named. Start by locating the iCalendar parsing and validation path for VTIMEZONE, then determine how malformed TZOFFSETTO and TZOFFSETFROM data is handled. Done means invalid events are refused rather than synchronized, with coverage for the reported case.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.