pimutils / pimutils/vdirsyncer
Missing validation check for TZOFFSETTO and TZOFFSETFROM
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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