Configure: Fix ordering bug when processing split DEPENDs
authorRichard Levitte <levitte@openssl.org>
Wed, 7 Feb 2024 03:38:28 +0000 (04:38 +0100)
committerTomas Mraz <tomas@openssl.org>
Thu, 8 Feb 2024 10:39:51 +0000 (11:39 +0100)
Configure was recently made to process this sort of line:

    DEPEND[generated]=util/perl|OpenSSL/something.pm

Unfortunately, in processing such lines, the order in which paths
were recomputed caused some resulting paths to be faulty under some
circumstances.  This change fixes that.

Fixes #22853

Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23500)

(cherry picked from commit 64cae4064405384cf7fe130a1e0189725db5e877)

Configure

index 934b0d09c07197fab206baa886830a83c291599f..c09bec39f60d1e4017cbd122139c5743d18a96a4 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -2487,10 +2487,11 @@ EOF
                     && $f =~ m/^(.*?)\|(.*)$/) {
                     $i = $1;
                     $m = $2;
-                    $i = cleanfile($sourced, $i, $blddir, 1);
-                    $i2 = cleanfile($buildd, $i, $blddir);
+                    # We must be very careful to modify $i last
                     $d = cleanfile($sourced, "$i/$m", $blddir, 1);
                     $d2 = cleanfile($buildd, "$i/$m", $blddir);
+                    $i2 = cleandir($buildd, $i, $blddir);
+                    $i = cleandir($sourced, $i, $blddir, 1);
                 } else {
                     $d = cleanfile($sourced, $f, $blddir, 1);
                     $d2 = cleanfile($buildd, $f, $blddir);