LCOV - code coverage report
Current view: top level - src - md5.c (source / functions) Hit Total Coverage
Test: burp-coverage-clean.info Lines: 14 15 93.3 %
Date: 2022-12-03 01:09:05 Functions: 5 5 100.0 %

          Line data    Source code
       1             : #include "burp.h"
       2             : #include "alloc.h"
       3             : #include "conf.h"
       4             : #include "log.h"
       5             : #include "md5.h"
       6             : 
       7             : #if OPENSSL_VERSION_NUMBER < 0x30000000L
       8             : 
       9          47 : struct md5 *md5_alloc(
      10             :         const char *func
      11             : ) {
      12             :         struct md5 *md5;
      13          47 :         if(!(md5=(struct md5 *)calloc_w(1, sizeof(struct md5), func)))
      14             :                 return NULL;
      15          47 :         if(!(md5->ctx=(MD5_CTX *)calloc_w(1, sizeof(MD5_CTX), func)))
      16           0 :                 md5_free(&md5);
      17          47 :         return md5;
      18             : }
      19             : 
      20          47 : void md5_free(
      21             :         struct md5 **md5
      22             : ) {
      23          47 :         if(!md5 || !*md5)
      24             :                 return;
      25          47 :         free_v((void **)&(*md5)->ctx);
      26          47 :         free_v((void **)md5);
      27             : }
      28             : 
      29          47 : int md5_init(
      30             :         struct md5 *md5
      31             : ) {
      32          47 :         return MD5_Init(md5->ctx);
      33             : }
      34             : 
      35          18 : int md5_update(
      36             :         struct md5 *md5,
      37             :         const void *data,
      38             :         unsigned long len
      39             : ) {
      40          18 :         return MD5_Update(md5->ctx, data, len);
      41             : }
      42             : 
      43          24 : int md5_final(
      44             :         struct md5 *md5,
      45             :         unsigned char *md
      46             : ) {
      47          24 :         return MD5_Final(md, md5->ctx);
      48             : }
      49             : 
      50             : #else
      51             : 
      52             : struct md5 *md5_alloc(
      53             :         const char *func
      54             : ) {
      55             :         struct md5 *md5;
      56             :         if(!(md5=(struct md5 *)calloc_w(1, sizeof(struct md5), func)))
      57             :                 return NULL;
      58             :         if((md5->ctx=EVP_MD_CTX_create()))
      59             :         {
      60             : #ifdef UTEST
      61             :                 alloc_count++;
      62             : #endif
      63             :                 return md5;
      64             :         }
      65             :         log_oom_w(__func__, func);
      66             :         md5_free(&md5);
      67             :         return NULL;
      68             : }
      69             : 
      70             : void md5_free(
      71             :         struct md5 **md5
      72             : ) {
      73             :         if(!md5 || !*md5)
      74             :                 return;
      75             :         if ((*md5)->ctx)
      76             :                 EVP_MD_CTX_free((*md5)->ctx);
      77             :         free_v((void **)md5);
      78             : #ifdef UTEST
      79             :         alloc_count--;
      80             : #endif
      81             :         *md5=NULL;
      82             : }
      83             : 
      84             : int md5_init(
      85             :         struct md5 *md5
      86             : ) {
      87             :         return EVP_DigestInit_ex(md5->ctx, EVP_md5(), NULL);
      88             : }
      89             : 
      90             : int md5_update(
      91             :         struct md5 *md5,
      92             :         const void *data,
      93             :         unsigned long len
      94             : ) {
      95             :         return EVP_DigestUpdate(md5->ctx, data, len);
      96             : }
      97             : 
      98             : int md5_final(
      99             :         struct md5 *md5,
     100             :         unsigned char *md
     101             : ) {
     102             :         return EVP_DigestFinal_ex(md5->ctx, md, NULL);
     103             : }
     104             : 
     105             : #endif

Generated by: LCOV version 1.13