LCOV - code coverage report
Current view: top level - third_party/heimdal/lib/hcrypto/libtommath - bn_mp_init_multi.c (source / functions) Hit Total Coverage
Test: coverage report for v4-17-test 1498b464 Lines: 11 19 57.9 %
Date: 2024-06-13 04:01:37 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #include "tommath_private.h"
       2             : #ifdef BN_MP_INIT_MULTI_C
       3             : /* LibTomMath, multiple-precision integer library -- Tom St Denis */
       4             : /* SPDX-License-Identifier: Unlicense */
       5             : 
       6             : #include <stdarg.h>
       7             : 
       8         267 : mp_err mp_init_multi(mp_int *mp, ...)
       9             : {
      10         267 :    mp_err err = MP_OKAY;      /* Assume ok until proven otherwise */
      11         267 :    int n = 0;                 /* Number of ok inits */
      12         267 :    mp_int *cur_arg = mp;
      13             :    va_list args;
      14             : 
      15         267 :    va_start(args, mp);        /* init args to next argument from caller */
      16        1754 :    while (cur_arg != NULL) {
      17        1220 :       if (mp_init(cur_arg) != MP_OKAY) {
      18             :          /* Oops - error! Back-track and mp_clear what we already
      19             :             succeeded in init-ing, then return error.
      20             :          */
      21             :          va_list clean_args;
      22             : 
      23             :          /* now start cleaning up */
      24           0 :          cur_arg = mp;
      25           0 :          va_start(clean_args, mp);
      26           0 :          while (n-- != 0) {
      27           0 :             mp_clear(cur_arg);
      28           0 :             cur_arg = va_arg(clean_args, mp_int *);
      29             :          }
      30           0 :          va_end(clean_args);
      31           0 :          err = MP_MEM;
      32           0 :          break;
      33             :       }
      34        1220 :       n++;
      35        1220 :       cur_arg = va_arg(args, mp_int *);
      36             :    }
      37         267 :    va_end(args);
      38         267 :    return err;                /* Assumed ok, if error flagged above. */
      39             : }
      40             : 
      41             : #endif

Generated by: LCOV version 1.13