1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 /*
3  * SSL helper functions shared by sign-file and extract-cert.
4  */
5 
drain_openssl_errors(int l,int silent)6 static void drain_openssl_errors(int l, int silent)
7 {
8 	const char *file;
9 	char buf[120];
10 	int e, line;
11 
12 	if (ERR_peek_error() == 0)
13 		return;
14 	if (!silent)
15 		fprintf(stderr, "At main.c:%d:\n", l);
16 
17 	while ((e = ERR_peek_error_line(&file, &line))) {
18 		ERR_error_string(e, buf);
19 		if (!silent)
20 			fprintf(stderr, "- SSL %s: %s:%d\n", buf, file, line);
21 		ERR_get_error();
22 	}
23 }
24 
25 #define ERR(cond, fmt, ...)				\
26 	do {						\
27 		bool __cond = (cond);			\
28 		drain_openssl_errors(__LINE__, 0);	\
29 		if (__cond) {				\
30 			errx(1, fmt, ## __VA_ARGS__);	\
31 		}					\
32 	} while (0)
33