diff options
author | John Högberg <[email protected]> | 2018-07-18 13:55:16 +0200 |
---|---|---|
committer | John Högberg <[email protected]> | 2018-07-18 14:07:48 +0200 |
commit | 2e5e9cf29d67db7d9f85c3ae27c88ca3824e7496 (patch) | |
tree | 9835e59ebe643b2efa5a37e87f706bb3bcd847e0 /erts/preloaded/src/prim_file.erl | |
parent | a3a900e382ccba96ef15369c5771070e538b8367 (diff) | |
download | otp-2e5e9cf29d67db7d9f85c3ae27c88ca3824e7496.tar.gz otp-2e5e9cf29d67db7d9f85c3ae27c88ca3824e7496.tar.bz2 otp-2e5e9cf29d67db7d9f85c3ae27c88ca3824e7496.zip |
Fix node crash on passing bad arguments to file:read_file_info/2
Diffstat (limited to 'erts/preloaded/src/prim_file.erl')
-rw-r--r-- | erts/preloaded/src/prim_file.erl | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/erts/preloaded/src/prim_file.erl b/erts/preloaded/src/prim_file.erl index 41ff38359c..517ca74301 100644 --- a/erts/preloaded/src/prim_file.erl +++ b/erts/preloaded/src/prim_file.erl @@ -580,15 +580,20 @@ read_link_info(Name, Opts) -> read_info_1(Name, 0, proplist_get_value(time, Opts, local)). read_info_1(Name, FollowLinks, TimeType) -> - try read_info_nif(encode_path(Name), FollowLinks) of - {error, Reason} -> {error, Reason}; - FileInfo -> - CTime = from_posix_seconds(FileInfo#file_info.ctime, TimeType), - MTime = from_posix_seconds(FileInfo#file_info.mtime, TimeType), - ATime = from_posix_seconds(FileInfo#file_info.atime, TimeType), - {ok, FileInfo#file_info{ ctime = CTime, mtime = MTime, atime = ATime }} + try + case read_info_nif(encode_path(Name), FollowLinks) of + {error, Reason} -> + {error, Reason}; + FileInfo -> + CTime = from_posix_seconds(FileInfo#file_info.ctime, TimeType), + MTime = from_posix_seconds(FileInfo#file_info.mtime, TimeType), + ATime = from_posix_seconds(FileInfo#file_info.atime, TimeType), + {ok, FileInfo#file_info{ ctime = CTime, + mtime = MTime, + atime = ATime }} + end catch - error:badarg -> {error, badarg} + error:_ -> {error, badarg} end. write_file_info(Filename, Info) -> |