From 9f2f5d4ad6ed763247af1c88761f7e87aff75895 Mon Sep 17 00:00:00 2001 From: tomaioo Date: Sun, 21 Jun 2026 17:09:33 -0700 Subject: [PATCH 1/2] fix(security): 2 improvements across 2 files - Security: Potential Division by Zero in Reduced Hamiltonian - Security: Missing Input Validation in Valdemoro Reconstruction Signed-off-by: tomaioo <203048277+tomaioo@users.noreply.github.com> --- src/openfermion/chem/reduced_hamiltonian.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/openfermion/chem/reduced_hamiltonian.py b/src/openfermion/chem/reduced_hamiltonian.py index 98a58d1ef..42c993b4d 100644 --- a/src/openfermion/chem/reduced_hamiltonian.py +++ b/src/openfermion/chem/reduced_hamiltonian.py @@ -6,6 +6,10 @@ def make_reduced_hamiltonian( molecular_hamiltonian: InteractionOperator, n_electrons: int ) -> InteractionOperator: + if n_electrons < 2: + raise ValueError( + 'n_electrons must be at least 2 to avoid division by zero.' + ) r""" Construct the reduced Hamiltonian. From 7d105dab77dc6cf7b3136f66feb0f21f339ab5c5 Mon Sep 17 00:00:00 2001 From: tomaioo Date: Sun, 21 Jun 2026 17:09:34 -0700 Subject: [PATCH 2/2] fix(security): 2 improvements across 2 files - Security: Potential Division by Zero in Reduced Hamiltonian - Security: Missing Input Validation in Valdemoro Reconstruction Signed-off-by: tomaioo <203048277+tomaioo@users.noreply.github.com> --- src/openfermion/linalg/rdm_reconstruction.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/openfermion/linalg/rdm_reconstruction.py b/src/openfermion/linalg/rdm_reconstruction.py index 6bd01cc04..3b7819524 100644 --- a/src/openfermion/linalg/rdm_reconstruction.py +++ b/src/openfermion/linalg/rdm_reconstruction.py @@ -16,6 +16,10 @@ def valdemoro_reconstruction(tpdm, n_electrons): Returns: six-tensor reprsenting the three-RDM """ + if n_electrons < 2: + raise ValueError( + 'n_electrons must be at least 2 to avoid division by zero.' + ) opdm = (2 / (n_electrons - 1)) * np.einsum('ijjk', tpdm) unconnected_tpdm = wedge(opdm, opdm, (1, 1), (1, 1)) unconnected_d3 = wedge(opdm, unconnected_tpdm, (1, 1), (2, 2))