aboutsummaryrefslogtreecommitdiffstats
path: root/erts/preloaded/src/prim_file.erl
diff options
context:
space:
mode:
authorJohn Högberg <[email protected]>2018-07-18 13:55:16 +0200
committerJohn Högberg <[email protected]>2018-07-18 14:07:48 +0200
commit2e5e9cf29d67db7d9f85c3ae27c88ca3824e7496 (patch)
tree9835e59ebe643b2efa5a37e87f706bb3bcd847e0 /erts/preloaded/src/prim_file.erl
parenta3a900e382ccba96ef15369c5771070e538b8367 (diff)
downloadotp-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.erl21
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) ->