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