| 1 |
|
| 2 | |
| 3 | * SSL helper functions shared by sign-file and extract-cert.
|
| 4 |
|
| 5 |
|
| 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)
|