1 /* SPDX-License-Identifier: LGPL-2.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) 33