From 79c8dcf3985a7b75eac8e53eb8652728af6c5d3d Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Thu, 29 Sep 2022 15:33:20 +0200 Subject: [PATCH] Add {lib}_R_{lib}_LIB, for our engines and other "external" modules Engines lacked the possibility to refer to themselves in this form: WHATEVERerr(WHATEVER_F_SOMETHING, WHATEVER_R_WHATEVER_LIB); This little change makes that possible, and gets used in e_capi. Reviewed-by: Tomas Mraz Reviewed-by: Hugo Landau (Merged from https://github.com/openssl/openssl/pull/19301) --- engines/e_capi_err.c | 9 ++++++++- engines/e_capi_err.h | 3 ++- util/mkerr.pl | 10 +++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/engines/e_capi_err.c b/engines/e_capi_err.c index 1d7636562e9b9..8c233f01fdda5 100644 --- a/engines/e_capi_err.c +++ b/engines/e_capi_err.c @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -92,3 +92,10 @@ static void ERR_CAPI_error(int function, int reason, const char *file, int line) ERR_raise(lib_code, reason); ERR_set_debug(file, line, NULL); } + +static int ERR_CAPI_lib(void) +{ + if (lib_code == 0) + lib_code = ERR_get_next_error_library(); + return lib_code; +} diff --git a/engines/e_capi_err.h b/engines/e_capi_err.h index cd80c9be89f1e..480a8269d3ae8 100644 --- a/engines/e_capi_err.h +++ b/engines/e_capi_err.h @@ -1,6 +1,6 @@ /* * Generated by util/mkerr.pl DO NOT EDIT - * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -17,6 +17,7 @@ # define CAPIerr(f, r) ERR_CAPI_error(0, (r), OPENSSL_FILE, OPENSSL_LINE) +# define ERR_R_CAPI_LIB ERR_CAPI_lib() /* diff --git a/util/mkerr.pl b/util/mkerr.pl index 861b613b0d9c0..dd462769fb078 100755 --- a/util/mkerr.pl +++ b/util/mkerr.pl @@ -1,5 +1,5 @@ #! /usr/bin/env perl -# Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. +# Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved. # # Licensed under the Apache License 2.0 (the "License"). You may not use # this file except in compliance with the License. You can obtain a copy @@ -450,6 +450,7 @@ sub help } else { print OUT <<"EOF"; # define ${lib}err(f, r) ERR_${lib}_error(0, (r), OPENSSL_FILE, OPENSSL_LINE) +# define ERR_R_${lib}_LIB ERR_${lib}_lib() EOF if ( ! $static ) { @@ -629,6 +630,13 @@ sub help ERR_raise(lib_code, reason); ERR_set_debug(file, line, NULL); } + +${st}int ERR_${lib}_lib(void) +{ + if (lib_code == 0) + lib_code = ERR_get_next_error_library(); + return lib_code; +} EOF }