Large Language Models (LLMs) are increasingly used to generate security patches from vulnerable source code, but most evaluations focus on real vulnerabilities and rely on similarity based metrics that do not guarantee that the underlying weakness is removed. We study one-shot vulnerability patching with 14 LLMs on 56 Java vulnerabilities derived from the Vul4J benchmark, combining 15 real vulnerabilities with 41 strongly coupled artificial vulnerabilities that are validated with Proof-of-Vulnerability tests. For each LLM and vulnerability, we generate a single patch, integrate it into the project, and assess it by compiling the project and running the associated tests. Our results show that all LLMs achieve higher success rates on real vulnerabilities than on artificial ones, indicating limited generalization beyond previously seen patterns. Complementarity between LLMs is modest, so ensembles provide limited additional coverage. These findings illustrate the potential and the current limitations of LLM based automated vulnerability patching.