/src/nss/lib/ssl/sslerr.c
Line | Count | Source (jump to first uncovered line) |
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 | 36 | { |
22 | 36 | int oldErr = PORT_GetError(); |
23 | | |
24 | 36 | switch (oldErr) { |
25 | | |
26 | 0 | case 0: |
27 | 0 | case PR_IO_ERROR: |
28 | 0 | case SEC_ERROR_IO: |
29 | 0 | case SEC_ERROR_BAD_DATA: |
30 | 0 | case SEC_ERROR_LIBRARY_FAILURE: |
31 | 0 | case SEC_ERROR_EXTENSION_NOT_FOUND: |
32 | 1 | case SSL_ERROR_BAD_CLIENT: |
33 | 1 | case SSL_ERROR_BAD_SERVER: |
34 | 1 | case SSL_ERROR_SESSION_NOT_FOUND: |
35 | 1 | PORT_SetError(hiLevelError); |
36 | 1 | return hiLevelError; |
37 | | |
38 | 35 | default: /* leave the majority of error codes alone. */ |
39 | 35 | return oldErr; |
40 | 36 | } |
41 | 36 | } |