tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

sslerr.c (1179B)


      1 /*
      2 * Function to set error code only when meaningful error has not already
      3 * been set.
      4 *
      5 * This Source Code Form is subject to the terms of the Mozilla Public
      6 * License, v. 2.0. If a copy of the MPL was not distributed with this
      7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      8 
      9 #include "prerror.h"
     10 #include "secerr.h"
     11 #include "sslerr.h"
     12 #include "seccomon.h"
     13 
     14 /* look at the current value of PR_GetError, and evaluate it to see
     15 * if it is meaningful or meaningless (out of context).
     16 * If it is meaningless, replace it with the hiLevelError.
     17 * Returns the chosen error value.
     18 */
     19 int
     20 ssl_MapLowLevelError(int hiLevelError)
     21 {
     22    int oldErr = PORT_GetError();
     23 
     24    switch (oldErr) {
     25 
     26        case 0:
     27        case PR_IO_ERROR:
     28        case SEC_ERROR_IO:
     29        case SEC_ERROR_BAD_DATA:
     30        case SEC_ERROR_LIBRARY_FAILURE:
     31        case SEC_ERROR_EXTENSION_NOT_FOUND:
     32        case SSL_ERROR_BAD_CLIENT:
     33        case SSL_ERROR_BAD_SERVER:
     34        case SSL_ERROR_SESSION_NOT_FOUND:
     35            PORT_SetError(hiLevelError);
     36            return hiLevelError;
     37 
     38        default: /* leave the majority of error codes alone. */
     39            return oldErr;
     40    }
     41 }