[openssl-dev] sizeof (HMAC_CTX) changes with update, breaks binary compatibility

Dan McDonald danmcd at omniti.com
Fri Jun 12 01:09:59 UTC 2015


> On Jun 11, 2015, at 9:07 PM, Dan McDonald <danmcd at omniti.com> wrote:
> 
> typedef struct hmac_ctx_st {
>   const EVP_MD *md;
>   EVP_MD_CTX md_ctx;
>   EVP_MD_CTX i_ctx;
>   EVP_MD_CTX o_ctx;
>   unsigned int key_length;
>   unsigned char key[HMAC_MAX_MD_CBLOCK];
> + int key_init;
> } HMAC_CTX;

A cheesy, but binary compatible, fix might be:

typedef struct hmac_ctx_st {
  const EVP_MD *md;
  EVP_MD_CTX md_ctx;
  EVP_MD_CTX i_ctx;
  EVP_MD_CTX o_ctx;
  unsigned int key_init:1;   /* Ewww, cheesy use of bitfields... */
  unsigned int key_length:31;  /* but the sizeof (HMAC_CTX) doesn't change! */
  unsigned char key[HMAC_MAX_MD_CBLOCK];
} HMAC_CTX;


Dan



More information about the openssl-dev mailing list