From f8201e51a45859708f9eb627936e4d63f04d4fdc Mon Sep 17 00:00:00 2001 From: Paul Guyot Date: Sat, 2 Oct 2010 23:02:13 +0200 Subject: Fix crash with erlang:system_info({cpu_topology,junk}) There is a bug in system_info BIF causing a crash if erts_get_cpu_topology_term fails. The fix comes with a non-regression test. --- erts/emulator/beam/erl_bif_info.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'erts/emulator/beam/erl_bif_info.c') diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c index 40d8dc097c..a48c76886f 100644 --- a/erts/emulator/beam/erl_bif_info.c +++ b/erts/emulator/beam/erl_bif_info.c @@ -1687,6 +1687,8 @@ info_1_tuple(Process* BIF_P, /* Pointer to current process. */ return erts_get_cpu_topology_term(BIF_P, *tp); } else if (ERTS_IS_ATOM_STR("cpu_topology", sel) && arity == 2) { Eterm res = erts_get_cpu_topology_term(BIF_P, *tp); + if (res == THE_NON_VALUE) + goto badarg; ERTS_BIF_PREP_TRAP1(ret, erts_format_cpu_topology_trap, BIF_P, res); return ret; #if defined(PURIFY) || defined(VALGRIND) -- cgit v1.2.3