diff --git a/common/membuf.c b/common/membuf.c index 009fbc336..60491b590 100644 --- a/common/membuf.c +++ b/common/membuf.c @@ -231,3 +231,15 @@ peek_membuf (membuf_t *mb, size_t *len) *len = mb->len; return p; } + +/* To assist using membuf with function returning an error, this + * function sets the membuf into the error state. */ +void +set_membuf_err (membuf_t *mb, gpg_error_t err) +{ + if (!mb->out_of_core) + { + int myerr = gpg_err_code_to_errno (gpg_err_code (err)); + mb->out_of_core = myerr? myerr : EINVAL; + } +} diff --git a/common/membuf.h b/common/membuf.h index 1497bcd04..4b2be1a71 100644 --- a/common/membuf.h +++ b/common/membuf.h @@ -60,5 +60,6 @@ void put_membuf_printf (membuf_t *mb, const char *format, void *get_membuf (membuf_t *mb, size_t *len); void *get_membuf_shrink (membuf_t *mb, size_t *len); const void *peek_membuf (membuf_t *mb, size_t *len); +void set_membuf_err (membuf_t *mb, gpg_error_t err); #endif /*GNUPG_COMMON_MEMBUF_H*/