Which vulnerability allows an attacker to repeatedly call a withdrawal function before the balance is updated, draining contract funds?