guess_file_type(BIO **bio, unsigned char *hdrbuf)
{
unsigned char *ptr;
- size_t consumed;
+ int res;
if (config_get_file_type() != FT_UNK)
return config_get_file_type();
- if (!BIO_read_ex(*bio, hdrbuf, HDRSIZE, &consumed))
+ res = BIO_read(*bio, hdrbuf, HDRSIZE);
+ if (res <= 0)
return op_crypto_err("Cannot guess file type; IO error.");
- *bio = BIO_new_seq(BIO_new_mem_buf(hdrbuf, consumed), *bio);
+ *bio = BIO_new_seq(BIO_new_mem_buf(hdrbuf, res), *bio);
if ((*bio) == NULL)
return op_crypto_err("BIO_new_seq() returned NULL.");
#define BUFFER_SIZE 4096
struct ContentInfo *ci = NULL;
unsigned char buffer[BUFFER_SIZE];
- size_t consumed;
- asn_dec_rval_t res;
+ int res1;
+ asn_dec_rval_t res2;
do {
- if (!BIO_read_ex(bio, buffer, BUFFER_SIZE, &consumed)) {
+ res1 = BIO_read(bio, buffer, BUFFER_SIZE);
+ if (res1 <= 0) {
op_crypto_err("IO error.");
goto fail;
}
- res = ber_decode(&asn_DEF_ContentInfo, (void **)&ci,
- buffer, consumed);
- pr_op_debug("Consumed: %zu", res.consumed);
+ res2 = ber_decode(&asn_DEF_ContentInfo, (void **)&ci,
+ buffer, res1);
+ pr_op_debug("Consumed: %zu", res2.consumed);
- switch (res.code) {
+ switch (res2.code) {
case RC_OK:
return ci;
};
static int
-bioseq_read_ex(BIO *bio, char *data, size_t len, size_t *consumed)
+bioseq_read(BIO *bio, char *data, int len)
{
struct bioseq_priv *priv = BIO_get_data(bio);
int res;
if (priv->prefix != NULL) {
- res = BIO_read_ex(priv->prefix, data, len, consumed);
- if (res == 1 && BIO_eof(priv->prefix)) {
+ res = BIO_read(priv->prefix, data, len);
+ if (BIO_eof(priv->prefix) || res <= 0) {
BIO_free_all(priv->prefix);
priv->prefix = NULL;
+ return res;
}
return res;
}
- return BIO_read_ex(priv->suffix, data, len, consumed);
+ return BIO_read(priv->suffix, data, len);
}
static int
if (method == NULL)
return op_crypto_err("BIO_meth_new() returned NULL.");
- if (!BIO_meth_set_read_ex(method, bioseq_read_ex) ||
+ if (!BIO_meth_set_read(method, bioseq_read) ||
!BIO_meth_set_destroy(method, bioseq_destroy)) {
BIO_meth_free(method);
method = NULL;