RFR: 8255405: sun/net/ftp/imp/FtpClient uses SimpleDateFormat in not thread-safe manner [v2]

Daniel Fuchs dfuchs at openjdk.java.net
Wed Oct 28 11:13:14 UTC 2020


On Tue, 27 Oct 2020 18:54:30 GMT, Igor Ignatyev <iignatyev at openjdk.org> wrote:

>> Hi all,
>> 
>> could you please review this small and trivial fix?
>> 
>> `sun/net/ftp/imp/FtpClient::dateFormats` is an array of `SimpleDateFormat` which are shared among all instances of `FtpClient`. the fact that `SimpleDateFormat` isn't thread-safe renders`FtpClient` to be non-thread-safe as well. the patch makes the only usage of `dateFormats` array, `parseRfc3659TimeValue` method, `synchronized`.
>> 
>> the problem was reported in #776
>> 
>> Thanks,
>> -- Igor
>
> Igor Ignatyev has updated the pull request incrementally with three additional commits since the last revision:
> 
>  - remove \n from MDTM response before parsing
>  - added leading 0 to the test
>  - use DateTimeFormatter instead of SimpleDateFormat

src/java.base/share/classes/sun/net/ftp/impl/FtpClient.java line 1770:

> 1768:         try {
> 1769:             var d = LocalDateTime.parse(s, RFC3659_DATETIME_FORMAT);
> 1770:             result = Date.from(d.atZone(ZoneOffset.systemDefault()).toInstant());

Should this be ZoneOffset.UTC rather than System default? I thought the date returned by the server were supposed to be in GMT.

-------------

PR: https://git.openjdk.java.net/jdk/pull/867


More information about the net-dev mailing list