BUG/MINOR: ssl/sample: x509_v_err_str converter output when not found

The x509_v_err_str converter now outputs the numerical value as a string
when the corresponding constant name was not found.

Must be backported as far as 2.7.
This commit is contained in:
William Lallemand 2023-05-03 15:13:10 +02:00
parent 9867987182
commit 117c7fde06
2 changed files with 17 additions and 0 deletions

View File

@ -19105,6 +19105,9 @@ x509_v_err_str
is useful in ACL in order to have a configuration which works with multiple is useful in ACL in order to have a configuration which works with multiple
version of OpenSSL since some codes might change when changing version. version of OpenSSL since some codes might change when changing version.
When the corresponding constant name was not found, outputs the numerical
value as a string.
The list of constant provided by OpenSSL can be found at The list of constant provided by OpenSSL can be found at
https://www.openssl.org/docs/manmaster/man3/X509_STORE_CTX_get_error.html#ERROR-CODES https://www.openssl.org/docs/manmaster/man3/X509_STORE_CTX_get_error.html#ERROR-CODES
Be careful to read the page for the right version of OpenSSL. Be careful to read the page for the right version of OpenSSL.
@ -19121,6 +19124,9 @@ x509_v_err_str
http-response add-header X-SSL Expired if cert_expired http-response add-header X-SSL Expired if cert_expired
http-response add-header X-SSL Revoked if cert_revoked http-response add-header X-SSL Revoked if cert_revoked
http-response add-header X-SSL-verify %[ssl_c_verify,x509_v_err_str]
7.3.2. Fetching samples from internal states 7.3.2. Fetching samples from internal states
-------------------------------------------- --------------------------------------------

View File

@ -410,6 +410,17 @@ static int sample_conv_x509_v_err(const struct arg *arg_p, struct sample *smp, v
smp->data.type = SMP_T_STR; smp->data.type = SMP_T_STR;
smp->flags |= SMP_F_CONST; smp->flags |= SMP_F_CONST;
return 1;
} else {
struct buffer *smp_trash = get_trash_chunk();
/* if the conversion failed, output the numbers as string */
chunk_printf(smp_trash, "%llu", smp->data.u.sint);
smp->data.u.str = *smp_trash;
smp->data.type = SMP_T_STR;
smp->flags &= ~SMP_F_CONST;
return 1; return 1;
} }