LCOV - code coverage report
Current view: top level - source4/heimdal/lib/hcrypto/libtommath - bn_mp_init_multi.c (source / functions) Hit Total Coverage
Test: coverage report for abartlet/fix-coverage dd10fb34 Lines: 11 20 55.0 %
Date: 2021-09-23 10:06:22 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #include <tommath.h>
       2             : #ifdef BN_MP_INIT_MULTI_C
       3             : /* LibTomMath, multiple-precision integer library -- Tom St Denis
       4             :  *
       5             :  * LibTomMath is a library that provides multiple-precision
       6             :  * integer arithmetic as well as number theoretic functionality.
       7             :  *
       8             :  * The library was designed directly after the MPI library by
       9             :  * Michael Fromberger but has been written from scratch with
      10             :  * additional optimizations in place.
      11             :  *
      12             :  * The library is free for all purposes without any express
      13             :  * guarantee it works.
      14             :  *
      15             :  * Tom St Denis, tomstdenis@gmail.com, http://libtom.org
      16             :  */
      17             : #include <stdarg.h>
      18             : 
      19        1032 : int mp_init_multi(mp_int *mp, ...)
      20             : {
      21        1032 :     mp_err res = MP_OKAY;      /* Assume ok until proven otherwise */
      22        1032 :     int n = 0;                 /* Number of ok inits */
      23        1032 :     mp_int* cur_arg = mp;
      24             :     va_list args;
      25             : 
      26        1032 :     va_start(args, mp);        /* init args to next argument from caller */
      27        6832 :     while (cur_arg != NULL) {
      28        4768 :         if (mp_init(cur_arg) != MP_OKAY) {
      29             :             /* Oops - error! Back-track and mp_clear what we already
      30             :                succeeded in init-ing, then return error.
      31             :             */
      32             :             va_list clean_args;
      33             : 
      34             :             /* end the current list */
      35           0 :             va_end(args);
      36             : 
      37             :             /* now start cleaning up */
      38           0 :             cur_arg = mp;
      39           0 :             va_start(clean_args, mp);
      40           0 :             while (n--) {
      41           0 :                 mp_clear(cur_arg);
      42           0 :                 cur_arg = va_arg(clean_args, mp_int*);
      43             :             }
      44           0 :             va_end(clean_args);
      45           0 :             res = MP_MEM;
      46           0 :             break;
      47             :         }
      48        4768 :         n++;
      49        4768 :         cur_arg = va_arg(args, mp_int*);
      50             :     }
      51        1032 :     va_end(args);
      52        1032 :     return res;                /* Assumed ok, if error flagged above. */
      53             : }
      54             : 
      55             : #endif
      56             : 
      57             : /* $Source: /cvs/libtom/libtommath/bn_mp_init_multi.c,v $ */
      58             : /* $Revision: 1.4 $ */
      59             : /* $Date: 2006/12/28 01:25:13 $ */

Generated by: LCOV version 1.13