From 874b840a31338f7af120eca5ea7d130a659d70f3 Mon Sep 17 00:00:00 2001 From: Alejandro R Mosteo Date: Mon, 24 Feb 2025 15:09:14 +0100 Subject: [PATCH] fix: Did_You_Mean crashing with invalid data (#1864) --- src/alire/alire-utils-did_you_mean.adb | 6 +++--- testsuite/tests/issues/did-you-mean/test.py | 16 ++++++++++++++++ testsuite/tests/issues/did-you-mean/test.yaml | 3 +++ 3 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 testsuite/tests/issues/did-you-mean/test.py create mode 100644 testsuite/tests/issues/did-you-mean/test.yaml diff --git a/src/alire/alire-utils-did_you_mean.adb b/src/alire/alire-utils-did_you_mean.adb index 75c492be..b6c2722c 100644 --- a/src/alire/alire-utils-did_you_mean.adb +++ b/src/alire/alire-utils-did_you_mean.adb @@ -7,14 +7,14 @@ package body Alire.Utils.Did_You_Mean with Preelaborate is ------------------------------- function Levenshtein_Edit_Distance (S, T : String) return Natural is - D : array (0 .. S'Last, 0 .. T'Last) of Natural; + D : array (S'First - 1 .. S'Last, T'First - 1 .. T'Last) of Natural; begin for I in D'Range (1) loop - D (I, 0) := I; + D (I, T'First - 1) := I; end loop; for J in D'Range (2) loop - D (0, J) := J; + D (S'First - 1, J) := J; end loop; for I in S'Range loop diff --git a/testsuite/tests/issues/did-you-mean/test.py b/testsuite/tests/issues/did-you-mean/test.py new file mode 100644 index 00000000..27304ff2 --- /dev/null +++ b/testsuite/tests/issues/did-you-mean/test.py @@ -0,0 +1,16 @@ +""" +Verify that `alr --format=yam` does not crash +""" + +from drivers.alr import run_alr +from drivers.asserts import assert_substring + + +p = run_alr("--format=yam", complain_on_error=False) # Note, not yaml + +# The invalid format should be properly reported instead of a exception being raised + +assert_substring("Unknown argument in --format=yam", p.out) + + +print("SUCCESS") diff --git a/testsuite/tests/issues/did-you-mean/test.yaml b/testsuite/tests/issues/did-you-mean/test.yaml new file mode 100644 index 00000000..fa855459 --- /dev/null +++ b/testsuite/tests/issues/did-you-mean/test.yaml @@ -0,0 +1,3 @@ +driver: python-script +indexes: + compiler_only_index: {} -- 2.39.5