Submitted By: Ger Hobbelt <ger@hobbelt.com>

Check callback return value when outputting errors.
This commit is contained in:
Dr. Stephen Henson 2010-05-15 00:34:06 +00:00
parent e855d538de
commit 19674b5a1d
2 changed files with 12 additions and 1 deletions

View File

@ -813,6 +813,16 @@ int dump_certs_pkeys_bag (BIO *out, PKCS12_SAFEBAG *bag, char *pass,
default:
BIO_printf (bio_err, "Warning unsupported bag type: ");
i2a_ASN1_OBJECT (bio_err, bag->type);
{
unsigned char *foo = NULL;
int foolen;
FILE *op;
foolen = i2d_PKCS12_SAFEBAG(bag, &foo);
op = fopen("/tmp/unknown.der", "w");
fwrite(foo, 1, foolen, op);
fclose(op);
}
BIO_printf (bio_err, "\n");
return 1;
break;

View File

@ -81,7 +81,8 @@ void ERR_print_errors_cb(int (*cb)(const char *str, size_t len, void *u),
ERR_error_string_n(l, buf, sizeof buf);
BIO_snprintf(buf2, sizeof(buf2), "%lu:%s:%s:%d:%s\n", es, buf,
file, line, (flags & ERR_TXT_STRING) ? data : "");
cb(buf2, strlen(buf2), u);
if (cb(buf2, strlen(buf2), u) <= 0)
break; /* abort outputting the error report */
}
}