Review fixes: pairing by UID, bounded reads, notes per reader, per-resource tolerance #35
No reviewers
Labels
No labels
bug
documentation
enhancement
performance
security
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo-dav!35
Loading…
Reference in a new issue
No description provided.
Delete branch "sec2-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The review fixes for postulo-dav: the open
bugandsecurityissues, apart from the three below, in two commits (the first is the dev environment and CI; the second is everything that touchesdav.py,text.pyandsync.py, which call into one another and were rewritten together).Closes #7, #19, #20, #21, #22, #23, #24, #25, #26, #27, #28, #30, #31, #32, #33, #34
Refs #6, #11, #13 (left open, see below)
What and why, per issue
pyjwt 2.15.1,urllib3 2.8.0,oauthlib 4.0.0,django 6.1.2, ...) and the core pin moves to42be52048.pip-audit2.10.1 on the exported lock reports nothing, with no ignore. CI gains the audit step (Postulo is left out of the export: it is installed from git and--strictwould stop at it) and installs uv from a pinned version whoseinstall.shis checked against a sha256 (same values as the core), inci.ymlandrelease.yml.with_notes,note_for,write_note); contacts are thosevisible_tothem, and one they cannot write is not changed from the phone (the change is a note, once).%40and a stored@are one resource; new events are named for the UID's own part.report.errorcarries it)./.well-known/…, then/.REVis read in the extended form, with fractions and offsets; a card that gives no time wins and the report says it was chosen blind.TEL/URLleaves the number/link here alone.AuthenticationRefusedwith a translated sentence and the status on the error; the other messages are translated;test()andsync()show the sentence with no class name in front.URLthat is not an http(s) address is dropped with a note (plain and groupeditem1.URL:forms).read_bodyto a size (2 MB a listing, 256 KB a card or event) and a deadline;client(total=60, follow_redirects=False); redirects are followed by hand and an address the server names (principal, home, listing, redirect) must stay on the configured host; a listing is read only for what is under the collection. An oversized resource is a skip with a note and the next is read.no-uid-conflict. Not done, because it needs the core (#326/#327): a pair undone by hand staying undone.DESCRIPTIONno longer replaces the notes;DURATION; the application's link in the event whenPOSTULO_PUBLIC_URLis set.ATTENDEEor the notes. The document saysMETHOD:PUBLISH. RFC 4791 §4.1 asks a calendar object resource to carry noMETHOD, and some servers refuse one, so a PUT answered 400/403/415 is repeated once without it (tested). The test that asserted the attendee line now asserts there is none.Tests
uv run pytest: 100 passed (the repo had 29 collected of which one third failed against the new core). Against the old sources the new tests fail (58 of 77 intest_dav.py).ruff check,ruff format --check,postulo-messages extract --check,check,guardall pass.pytest -m releasewas not run: the new strings are untranslated until Weblate's pull request.Left open, and why
Notes for the reviewer
django.pocatalogues changed and 7 appeared:postulo-messages extractagainst the new core pin (more languages) and the new strings. No translation is written here.sync.pyper issue would give commits that do not pass their own tests.🤖 Generated with Claude Code
href#32