From 867c27c5b03c846aef1e5fe4b3ee63de5f3a7f32 Mon Sep 17 00:00:00 2001 From: Raimo Niskanen Date: Fri, 19 Feb 2016 15:36:13 +0100 Subject: Hide Data in default format_status/2 if callback crashes --- lib/stdlib/doc/src/gen_statem.xml | 13 ++++++++----- lib/stdlib/src/gen_statem.erl | 4 +++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/stdlib/doc/src/gen_statem.xml b/lib/stdlib/doc/src/gen_statem.xml index 15e9584360..8462f5ff5f 100644 --- a/lib/stdlib/doc/src/gen_statem.xml +++ b/lib/stdlib/doc/src/gen_statem.xml @@ -1212,11 +1212,13 @@ erlang:'!' -----> Module:StateName/5 -

This callback is optional, so callback modules need not +

This callback is optional, so a callback module need not export it. The gen_statem module provides a default - implementation of this function that returns the callback - module state and data. The default function will also - be used if this callback fails. + implementation of this function that returns + {State,Data}. If this callback fails the default + function will return {State,Info} + where Info informs of the crash but no details, + to hide possibly sensitive data.

This function is called by a gen_statem process when:

@@ -1270,7 +1272,8 @@ erlang:'!' -----> Module:StateName/5

One use for this function is to return compact alternative state representations to avoid having large state terms - printed in logfiles. + printed in logfiles. Another is to hide sensitive data from + being written to the error log.

This function may use throw, diff --git a/lib/stdlib/src/gen_statem.erl b/lib/stdlib/src/gen_statem.erl index 1ca2e1009c..b580eaab97 100644 --- a/lib/stdlib/src/gen_statem.erl +++ b/lib/stdlib/src/gen_statem.erl @@ -1214,7 +1214,9 @@ format_status( catch Result -> Result; _:_ -> - format_status_default(Opt, State, Data) + format_status_default( + Opt, State, + "Module:format_status/2 crashed") end; false -> format_status_default(Opt, State, Data) -- cgit v1.2.3