X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/fa7225c82381bac4432a6edf16f53b5370238d85..2973440143693ed88ec4a84745ea02f47376daa1:/OSX/libsecurity_utilities/lib/errors.cpp?ds=sidebyside diff --git a/OSX/libsecurity_utilities/lib/errors.cpp b/OSX/libsecurity_utilities/lib/errors.cpp index 7384c990..9ecda042 100644 --- a/OSX/libsecurity_utilities/lib/errors.cpp +++ b/OSX/libsecurity_utilities/lib/errors.cpp @@ -27,6 +27,8 @@ // #include #include +#include +#include #include #include #include @@ -121,13 +123,15 @@ UnixError::UnixError() : error(errno) LogBacktrace(); } -UnixError::UnixError(int err) : error(err) +UnixError::UnixError(int err, bool suppresslogging) : error(err) { SECURITY_EXCEPTION_THROW_UNIX(this, err); - snprintf(whatBuffer, whatBufferSize, "UNIX error exception: %d", this->error); - secnotice("security_exception", "%s", what()); - LogBacktrace(); + if(!suppresslogging || secinfoenabled("security_exception")) { + snprintf(whatBuffer, whatBufferSize, "UNIX error exception: %d", this->error); + secnotice("security_exception", "%s", what()); + LogBacktrace(); + } } const char *UnixError::what() const throw () @@ -144,10 +148,12 @@ OSStatus UnixError::osStatus() const int UnixError::unixError() const { return error; } -void UnixError::throwMe(int err) { throw UnixError(err); } +void UnixError::throwMe(int err) { throw UnixError(err, false); } +void UnixError::throwMeNoLogging(int err) { throw UnixError(err, true); } + // @@@ This is a hack for the Network protocol state machine -UnixError UnixError::make(int err) { return UnixError(err); } +UnixError UnixError::make(int err) { return UnixError(err, false); } //