From 90a7c90500ddb3c29eff988a8840ffc1e3e44e7a Mon Sep 17 00:00:00 2001 From: "Dr. David von Oheimb" Date: Tue, 10 Mar 2020 08:12:57 +0100 Subject: [PATCH] fix false positive of check-format.pl regarding '#if' on preceding line; extend negative tests Reviewed-by: Richard Levitte Reviewed-by: David von Oheimb (Merged from https://github.com/openssl/openssl/pull/11285) --- util/check-format-test-negatives.c | 39 ++++++++++++++++++++++++++++++ util/check-format.pl | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/util/check-format-test-negatives.c b/util/check-format-test-negatives.c index c9f781e06b..35cbd75ba3 100644 --- a/util/check-format-test-negatives.c +++ b/util/check-format-test-negatives.c @@ -113,7 +113,46 @@ int f(void) /* 5; else 6; + + if (1) { + if (2) { + case MAC_TYPE_MAC: + { + EVP_MAC_CTX *new_mac_ctx; + + if (ctx->pkey == NULL) + return 0; + } + break; + default: + /* This should be dead code */ + return 0; + } + } + if (expr_line1 + == expr_line2 + && expr_line3) { + c1; + } else { + c; + d; + } + if (expr_line1 + == expr_line2 + && expr_line3) + hanging_stmt; } + +const OPTIONS passwd_options[] = { + {"aixmd5", OPT_AIXMD5, '-', "AIX MD5-based password algorithm"}, +#if !defined(OPENSSL_NO_DES) && !defined(OPENSSL_NO_DEPRECATED_3_0) + {"crypt", OPT_CRYPT, '-', "Standard Unix password algorithm (default)"}, +#endif + OPT_R_OPTIONS, + + {NULL} +}; + typedef * d(int) x; typedef (int) diff --git a/util/check-format.pl b/util/check-format.pl index a0b493e600..b7c28f15ef 100755 --- a/util/check-format.pl +++ b/util/check-format.pl @@ -1001,7 +1001,7 @@ while (<>) { # loop over all lines of all input files # check for opening brace after if/while/for/switch/do not on same line # note that "no '{' on same line after '} else'" is handled further below if (/^[\s@]*{/ && # leading '{' - $line_before > 0 && + $line_before > 0 && !($contents_before_ =~ m/^\s*#/) && # not preprocessor directive '#if (my ($head, $mid, $tail) = ($contents_before_ =~ m/(^|^.*\W)(if|while|for|switch|do)(\W.*$|$)/))) { my $brace_after = $tail =~ /^[\s@]*{/; # any whitespace or comments then '{' report("'{' not on same line as preceding '$mid'") if !$brace_after; -- 2.25.1