Although significant progress has been made in the last few years towards cooperative and autonomous driving, the transition from human-driven to fully automated vehicles is expected to happen slowly. The question of semi-autonomous driving, where Advanced Driver Assistance Systems assist human drivers in their decisions, will therefore become increasingly important. In this paper, we consider the problem of safe intersection crossing for semi-autonomous vehicles with communication capacities. We design an intersection supervisor based on a mixed-integer quadratic programming approach which monitors the control inputs of each vehicle, and overrides those controls when necessary to ensure that all vehicles can navigate safely. Moreover, the solution control deviates minimally from the vehicles target inputs: overriding only occurs when it is strictly necessary, in which case the control is chosen as close as possible to the driver's intent. We theoretically prove that the supervisor needs only consider a finite future time horizon to ensure safety and deadlock avoidance over an infinite time horizon, and we demonstrate through simulation that this algorithm can work in real time. Additionally, unlike previous work, our formulation is suitable for complex intersection geometries with a high number of vehicles.