diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2019-09-20 18:53:42 +0300 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2019-09-20 18:53:42 +0300 |
commit | ae685e7aab7f278cf197b8b1b1ccf76a6e884682 (patch) | |
tree | 7c1a02632c4b2a57145e484dfddcb55eba4823aa /libunwind/src/UnwindCursor.hpp | |
parent | af77ca7e6e738b7963a622e4c35807ecc52f854b (diff) |
Unwind: prevent unw_get_proc_info from returning stale data
If unwind info is not available at the current IP, unw_get_proc_info should
return a zero-filled structure rather than the info of the previous IP.
This change also makes unw_get_proc_info return UNW_ENOINFO instead of
UNW_ESUCCESS.
Patch by Amanieu d'Antras!
llvm-svn: 372407
Diffstat (limited to 'libunwind/src/UnwindCursor.hpp')
-rw-r--r-- | libunwind/src/UnwindCursor.hpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libunwind/src/UnwindCursor.hpp b/libunwind/src/UnwindCursor.hpp index a96c9f39958d..488c3173dd7e 100644 --- a/libunwind/src/UnwindCursor.hpp +++ b/libunwind/src/UnwindCursor.hpp @@ -1991,7 +1991,10 @@ int UnwindCursor<A, R>::step() { template <typename A, typename R> void UnwindCursor<A, R>::getInfo(unw_proc_info_t *info) { - *info = _info; + if (_unwindInfoMissing) + memset(info, 0, sizeof(*info)); + else + *info = _info; } template <typename A, typename R> |