summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikolaj Izdebski <mizdebsk@redhat.com>2022-04-23 00:12:11 +0200
committerJaikiran Pai <jaikiran.pai@gmail.com>2022-05-20 19:48:19 +0530
commitbabd1c4007b5d1afc9e4e0744455fbdd6b85e88d (patch)
treef6c5ba529bcf79859b27304456b0f1701add7726 /src
parente452d21479e897206fffe98cfb524dfb8a59e7ac (diff)
downloadant-babd1c4007b5d1afc9e4e0744455fbdd6b85e88d.tar.gz
Fix integer overflow when parsing SOURCE_DATE_EPOCH
This closes #186 pull request at github/apache/ant repo.
Diffstat (limited to 'src')
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/Tstamp.java2
-rw-r--r--src/tests/antunit/taskdefs/tstamp-test.xml31
2 files changed, 32 insertions, 1 deletions
diff --git a/src/main/org/apache/tools/ant/taskdefs/Tstamp.java b/src/main/org/apache/tools/ant/taskdefs/Tstamp.java
index aa1034eae..ca10efe00 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Tstamp.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Tstamp.java
@@ -82,7 +82,7 @@ public class Tstamp extends Task {
try {
if (epoch != null) {
// Value of SOURCE_DATE_EPOCH will be an integer, representing seconds.
- d = new Date(Integer.parseInt(epoch) * 1000);
+ d = new Date(Long.parseLong(epoch) * 1000L);
log("Honouring environment variable " + ENV_SOURCE_DATE_EPOCH + " which has been set to " + epoch);
}
} catch(NumberFormatException e) {
diff --git a/src/tests/antunit/taskdefs/tstamp-test.xml b/src/tests/antunit/taskdefs/tstamp-test.xml
index 20c322762..1553d32ee 100644
--- a/src/tests/antunit/taskdefs/tstamp-test.xml
+++ b/src/tests/antunit/taskdefs/tstamp-test.xml
@@ -75,4 +75,35 @@ public class IsEpochIn1969Here implements Condition {
<!-- 'iso' overrides 'simple' -->
<au:assertPropertyEquals name="DSTAMP" value="19720417"/>
</target>
+
+ <target name="testSourceDateEpoch">
+ <mkdir dir="${input}"/>
+ <mkdir dir="${output}"/>
+ <echo file="${input}/TstampAntunitTest.java"><![CDATA[
+ import org.apache.tools.ant.*;
+ import org.apache.tools.ant.taskdefs.*;
+ public class TstampAntunitTest {
+ public static void main(String[] args) {
+ Task task = new Tstamp();
+ task.setProject(new Project());
+ task.execute();
+ String today = task.getProject().getProperty("TODAY");
+ System.out.println("TODAY is " + today);
+ }
+ }
+ ]]></echo>
+ <javac srcdir="${input}" destdir="${output}"/>
+ <local name="testout"/>
+ <java classname="TstampAntunitTest"
+ failonerror="true"
+ outputproperty="testout"
+ fork="true">
+ <classpath>
+ <pathelement location="${output}"/>
+ <pathelement path="${java.class.path}"/>
+ </classpath>
+ <env key="SOURCE_DATE_EPOCH" value="1650585600"/>
+ </java>
+ <au:assertEquals expected="TODAY is April 22 2022" actual="${testout}"/>
+ </target>
</project>