Commit 0704343f authored by Graeme Perrow's avatar Graeme Perrow Committed by Rich Salz
Browse files

RT32671: wrong multiple errs TS_check_status_info



Reviewed-by: default avatarTim Hudson <tjh@openssl.org>
Signed-off-by: default avatarRich Salz <rsalz@openssl.org>
parent 558ceae7
Loading
Loading
Loading
Loading
+10 −13
Original line number Diff line number Diff line
@@ -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);