Unbounded weekly reservation lets one student lock an instructor's whole series #35
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
Severity: Low — abuse / availability DoS.
Problem
A single
recurrence=weeklybooking reserves every unbooked slot in the recurrence group with no cap (src/Booking/BookingEndpoint.php:144-149).Impact
One student can lock up an instructor's entire recurring schedule in a single request.
Fix
Cap the number of occurrences a single weekly booking may reserve (configurable per offering, or a sane default), and/or require the offering's
allow_weeklyflag to be set.Verified resolved on main (
061d09e, PR #38): BookingEndpoint::MAX_WEEKLY_OCCURRENCES caps a single weekly booking at 12 occurrences, so one request can no longer lock an instructor's entire recurring series. Note the optional second half of the suggested fix (enforcing the offering's allow_weekly flag at booking time) is not implemented — the cap alone addresses the lockup abuse described here; flag enforcement can be a separate enhancement if wanted. Re-confirmed during the 2026-06-10 security review pass.