diff options
author | Mikolaj Izdebski <mizdebsk@redhat.com> | 2022-04-23 00:12:11 +0200 |
---|---|---|
committer | Jaikiran Pai <jaikiran.pai@gmail.com> | 2022-05-20 19:48:19 +0530 |
commit | babd1c4007b5d1afc9e4e0744455fbdd6b85e88d (patch) | |
tree | f6c5ba529bcf79859b27304456b0f1701add7726 /src | |
parent | e452d21479e897206fffe98cfb524dfb8a59e7ac (diff) | |
download | ant-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.java | 2 | ||||
-rw-r--r-- | src/tests/antunit/taskdefs/tstamp-test.xml | 31 |
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> |