CVE-2020-28016: Heap out-of-bounds write in parse_fix_phrase()
[exim.git] / src / scripts / reversion
index 63b4adbfe86667eae5a44814b6fbfbb516a33940..cec1db2fbde8d7ffa1dd14d3a17f523abc7925b6 100755 (executable)
@@ -29,8 +29,11 @@ fi
 # Read version information that was generated by a previous run of
 # this script, or during the release process.
 
-       set $(echo "$description" | sed 's|-| |;s|_|.|;s|[-_]| _|;s|-g|-|')
-if   [ -f ./version.sh ]; then
+# Override, used for automated testing w/o access to the
+# .git directory (w.g. inside a git worktree)
+if   [ -n "$EXIM_RELEASE_VERSION" ]; then
+    :
+elif   [ -f ./version.sh ]; then
     .    ./version.sh
 elif [ -f ../src/version.sh ]; then
     .    ../src/version.sh
@@ -44,6 +47,7 @@ elif [ -d ../../.git ] || [ -f ../../.git ] || [ "$1" = release ]; then
     else
         description=$(git describe --dirty=-XX --match 'exim-4*')
     fi
+    set $(echo "$description" | sed 's/-/ /; s/-g/-/')
     # Only update if we need to
     if [ "$2 $3" != "$EXIM_RELEASE_VERSION $EXIM_VARIANT_VERSION" ]
     then
@@ -51,9 +55,12 @@ elif [ -d ../../.git ] || [ -f ../../.git ] || [ "$1" = release ]; then
             EXIM_VARIANT_VERSION="$3"
             rm -f version.h
     fi
-else
+fi
+
+if [ -z "$EXIM_RELEASE_VERSION" ]; then
     echo "Cannot determine the release number" >&2
-    exit
+    echo "You may want to override it with EXIM_RELEASE_VERSION" >&2
+    exit 1
 fi
 
 # If you are maintaining a patched version of Exim, you can either
@@ -99,6 +106,7 @@ fi
 
 ( echo '# automatically generated file - see ../scripts/reversion'
   echo EXIM_RELEASE_VERSION='"'"$EXIM_RELEASE_VERSION"'"'
+  test -n "$EXIM_VARIANT_VERSION" && \
   echo EXIM_VARIANT_VERSION='"'"$EXIM_VARIANT_VERSION"'"'
   echo EXIM_COMPILE_NUMBER='"'"$EXIM_COMPILE_NUMBER"'"'
   if [ ".${exim_build_date_override:-}" != "." ]; then
@@ -110,13 +118,17 @@ if [ ! -f version.h ]
 then
 ( echo '/* automatically generated file - see ../scripts/reversion */'
   echo '#define EXIM_RELEASE_VERSION "'"$EXIM_RELEASE_VERSION"'"'
+  test -n "$EXIM_VARIANT_VERSION" && \
   echo '#define EXIM_VARIANT_VERSION "'"$EXIM_VARIANT_VERSION"'"'
-  echo '#define EXIM_VERSION_STR EXIM_RELEASE_VERSION EXIM_VARIANT_VERSION'
+  echo '#ifdef EXIM_VARIANT_VERSION'
+  echo '#define EXIM_VERSION_STR EXIM_RELEASE_VERSION "-" EXIM_VARIANT_VERSION'
+  echo '#else'
+  echo '#define EXIM_VERSION_STR EXIM_RELEASE_VERSION'
+  echo '#endif'
   if [ ".${exim_build_date_override:-}" != "." ]; then
     echo '#define EXIM_BUILD_DATE_OVERRIDE "'"${exim_build_date_override}"'"'
   fi
 ) >version.h
 fi
 
-echo ">>> version $EXIM_RELEASE_VERSION $EXIM_VARIANT_VERSION #$EXIM_COMPILE_NUMBER"
-echo
+#test -t 1 && echo ">>> version $EXIM_RELEASE_VERSION $EXIM_VARIANT_VERSION #$EXIM_COMPILE_NUMBER"