Commit 35cf781c authored by Viktor Dukhovni's avatar Viktor Dukhovni
Browse files

Apply self-imposed path length also to root CAs



Also, some readers of the code find starting the count at 1 for EE
cert confusing (since RFC5280 counts only non-self-issued intermediate
CAs, but we also counted the leaf).  Therefore, never count the EE
cert, and adjust the path length comparison accordinly.  This may
be more clear to the reader.

Reviewed-by: default avatarMatt Caswell <matt@openssl.org>
(cherry picked from commit dc5831da)
parent c8ce9e50
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -694,10 +694,9 @@ static int check_chain_extensions(X509_STORE_CTX *ctx)
                    goto end;
            }
        }
        /* Check pathlen if not self issued */
        if ((i > 1) && !(x->ex_flags & EXFLAG_SI)
            && (x->ex_pathlen != -1)
            && (plen > (x->ex_pathlen + proxy_path_length + 1))) {
        /* Check pathlen */
        if ((i > 1) && (x->ex_pathlen != -1)
            && (plen > (x->ex_pathlen + proxy_path_length))) {
            ctx->error = X509_V_ERR_PATH_LENGTH_EXCEEDED;
            ctx->error_depth = i;
            ctx->current_cert = x;
@@ -706,7 +705,7 @@ static int check_chain_extensions(X509_STORE_CTX *ctx)
                goto end;
        }
        /* Increment path length if not a self issued intermediate CA */
        if (i == 0 || (x->ex_flags & EXFLAG_SI) == 0)
        if (i > 0 && (x->ex_flags & EXFLAG_SI) == 0)
            plen++;
        /*
         * If this certificate is a proxy certificate, the next certificate