diff options
Diffstat (limited to 'src/lib/libcrypto/err/err.c')
| -rw-r--r-- | src/lib/libcrypto/err/err.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/lib/libcrypto/err/err.c b/src/lib/libcrypto/err/err.c index 292805433d..dcf725fd64 100644 --- a/src/lib/libcrypto/err/err.c +++ b/src/lib/libcrypto/err/err.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: err.c,v 1.42 2017/01/29 17:49:23 beck Exp $ */ | 1 | /* $OpenBSD: err.c,v 1.43 2017/02/07 03:11:11 beck Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -862,8 +862,9 @@ void | |||
| 862 | ERR_error_string_n(unsigned long e, char *buf, size_t len) | 862 | ERR_error_string_n(unsigned long e, char *buf, size_t len) |
| 863 | { | 863 | { |
| 864 | char lsbuf[30], fsbuf[30], rsbuf[30]; | 864 | char lsbuf[30], fsbuf[30], rsbuf[30]; |
| 865 | const char *ls, *fs, *rs; | 865 | const char *ls, *fs, *rs, *file, *data; |
| 866 | int l, f, r, ret; | 866 | int l, f, r, ret, line, flags; |
| 867 | |||
| 867 | 868 | ||
| 868 | l = ERR_GET_LIB(e); | 869 | l = ERR_GET_LIB(e); |
| 869 | f = ERR_GET_FUNC(e); | 870 | f = ERR_GET_FUNC(e); |
| @@ -886,7 +887,19 @@ ERR_error_string_n(unsigned long e, char *buf, size_t len) | |||
| 886 | rs = rsbuf; | 887 | rs = rsbuf; |
| 887 | } | 888 | } |
| 888 | 889 | ||
| 889 | ret = snprintf(buf, len, "error:%08lX:%s:%s:%s", e, ls, fs, rs); | 890 | if (ERR_get_error_line_data(&file, &line, &data, &flags) != 0) { |
| 891 | const char *filename; | ||
| 892 | |||
| 893 | if ((filename = strrchr(file, '/')) != NULL) | ||
| 894 | filename++; | ||
| 895 | else | ||
| 896 | filename = file; | ||
| 897 | |||
| 898 | ret = snprintf(buf, len, "error:%08lX:%s:%s:%s:%s:%d", e, ls, | ||
| 899 | fs, rs, filename, line); | ||
| 900 | } else | ||
| 901 | ret = snprintf(buf, len, "error:%08lX:%s:%s:%s", e, ls, fs, rs); | ||
| 902 | |||
| 890 | if (ret == -1) | 903 | if (ret == -1) |
| 891 | return; /* can't happen, and can't do better if it does */ | 904 | return; /* can't happen, and can't do better if it does */ |
| 892 | if (ret >= len) { | 905 | if (ret >= len) { |
