From: Graeme Perrow Date: Mon, 2 Nov 2015 01:15:23 +0000 (-0500) Subject: RT32671: wrong multiple errs TS_check_status_info X-Git-Tag: OpenSSL_1_1_0-pre1~287 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=0704343f138a38d3882d5af2a4ebe8821e9a8f3a RT32671: wrong multiple errs TS_check_status_info Reviewed-by: Tim Hudson Signed-off-by: Rich Salz --- diff --git a/crypto/ts/ts_rsp_verify.c b/crypto/ts/ts_rsp_verify.c index 84c9b3135f..5a69a94807 100644 --- a/crypto/ts/ts_rsp_verify.c +++ b/crypto/ts/ts_rsp_verify.c @@ -87,12 +87,17 @@ static int ts_check_signer_name(GENERAL_NAME *tsa_name, X509 *signer); static int ts_find_name(STACK_OF(GENERAL_NAME) *gen_names, GENERAL_NAME *name); +/* + * This must be large enough to hold all values in ts_status_text (with + * comma separator) or all text fields in ts_failure_info (also with comma). + */ +#define TS_STATUS_BUF_SIZE 256 + /* * Local mapping between response codes and descriptions. - * Don't forget to change TS_STATUS_BUF_SIZE when modifying - * the elements of this array. */ -static const char *ts_status_text[] = { "granted", +static const char *ts_status_text[] = { + "granted", "grantedWithMods", "rejection", "waiting", @@ -102,12 +107,6 @@ static const char *ts_status_text[] = { "granted", #define TS_STATUS_TEXT_SIZE OSSL_NELEM(ts_status_text) -/* - * This must be greater or equal to the sum of the strings in TS_status_text - * plus the number of its elements. - */ -#define TS_STATUS_BUF_SIZE 256 - static struct { int code; const char *text; @@ -122,8 +121,6 @@ static struct { {TS_INFO_SYSTEM_FAILURE, "systemFailure"} }; -#define TS_FAILURE_INFO_SIZE OSSL_NELEM(ts_failure_info) - /*- * This function carries out the following tasks: @@ -445,7 +442,7 @@ static int ts_check_status_info(TS_RESP *response) return 1; /* There was an error, get the description in status_text. */ - if (0 <= status && status < (long)TS_STATUS_TEXT_SIZE) + if (0 <= status && status < (long) OSSL_NELEM(ts_status_text)) status_text = ts_status_text[status]; else status_text = "unknown code"; @@ -462,7 +459,7 @@ static int ts_check_status_info(TS_RESP *response) if (ASN1_BIT_STRING_get_bit(info->failure_info, ts_failure_info[i].code)) { if (!first) - strcpy(failure_text, ","); + strcat(failure_text, ","); else first = 0; strcat(failure_text, ts_failure_info[i].text);