LCOV - code coverage report
Current view: top level - source4/heimdal/lib/asn1 - der_copy.c (source / functions) Hit Total Coverage
Test: coverage report for abartlet/fix-coverage dd10fb34 Lines: 42 76 55.3 %
Date: 2021-09-23 10:06:22 Functions: 8 15 53.3 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 1997 - 2006 Kungliga Tekniska Högskolan
       3             :  * (Royal Institute of Technology, Stockholm, Sweden).
       4             :  * All rights reserved.
       5             :  *
       6             :  * Portions Copyright (c) 2009 Apple Inc. All rights reserved.
       7             :  *
       8             :  * Redistribution and use in source and binary forms, with or without
       9             :  * modification, are permitted provided that the following conditions
      10             :  * are met:
      11             :  *
      12             :  * 1. Redistributions of source code must retain the above copyright
      13             :  *    notice, this list of conditions and the following disclaimer.
      14             :  *
      15             :  * 2. Redistributions in binary form must reproduce the above copyright
      16             :  *    notice, this list of conditions and the following disclaimer in the
      17             :  *    documentation and/or other materials provided with the distribution.
      18             :  *
      19             :  * 3. Neither the name of the Institute nor the names of its contributors
      20             :  *    may be used to endorse or promote products derived from this software
      21             :  *    without specific prior written permission.
      22             :  *
      23             :  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
      24             :  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      25             :  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      26             :  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
      27             :  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      28             :  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      29             :  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      30             :  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      31             :  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      32             :  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      33             :  * SUCH DAMAGE.
      34             :  */
      35             : 
      36             : #include "der_locl.h"
      37             : 
      38             : RCSID("$Id$");
      39             : 
      40             : int
      41     7491497 : der_copy_general_string (const heim_general_string *from,
      42             :                          heim_general_string *to)
      43             : {
      44     7491497 :     *to = strdup(*from);
      45     7491497 :     if(*to == NULL)
      46           0 :         return ENOMEM;
      47     7491497 :     return 0;
      48             : }
      49             : 
      50             : int
      51           0 : der_copy_integer (const int *from, int *to)
      52             : {
      53           0 :     *to = *from;
      54           0 :     return 0;
      55             : }
      56             : 
      57             : int
      58           0 : der_copy_unsigned (const unsigned *from, unsigned *to)
      59             : {
      60           0 :     *to = *from;
      61           0 :     return 0;
      62             : }
      63             : 
      64             : int
      65           0 : der_copy_generalized_time (const time_t *from, time_t *to)
      66             : {
      67           0 :     *to = *from;
      68           0 :     return 0;
      69             : }
      70             : 
      71             : int
      72           0 : der_copy_utctime (const time_t *from, time_t *to)
      73             : {
      74           0 :     *to = *from;
      75           0 :     return 0;
      76             : }
      77             : 
      78             : int
      79        3496 : der_copy_utf8string (const heim_utf8_string *from, heim_utf8_string *to)
      80             : {
      81        3496 :     return der_copy_general_string(from, to);
      82             : }
      83             : 
      84             : int
      85        1500 : der_copy_printable_string (const heim_printable_string *from,
      86             :                        heim_printable_string *to)
      87             : {
      88        1500 :     to->length = from->length;
      89        1500 :     to->data   = malloc(to->length + 1);
      90        1500 :     if(to->data == NULL)
      91           0 :         return ENOMEM;
      92        1564 :     memcpy(to->data, from->data, to->length);
      93        1500 :     ((char *)to->data)[to->length] = '\0';
      94        1500 :     return 0;
      95             : }
      96             : 
      97             : int
      98         750 : der_copy_ia5_string (const heim_ia5_string *from,
      99             :                      heim_ia5_string *to)
     100             : {
     101         750 :     return der_copy_printable_string(from, to);
     102             : }
     103             : 
     104             : int
     105           0 : der_copy_bmp_string (const heim_bmp_string *from, heim_bmp_string *to)
     106             : {
     107           0 :     to->length = from->length;
     108           0 :     to->data   = malloc(to->length * sizeof(to->data[0]));
     109           0 :     if(to->length != 0 && to->data == NULL)
     110           0 :         return ENOMEM;
     111           0 :     memcpy(to->data, from->data, to->length * sizeof(to->data[0]));
     112           0 :     return 0;
     113             : }
     114             : 
     115             : int
     116           0 : der_copy_universal_string (const heim_universal_string *from,
     117             :                            heim_universal_string *to)
     118             : {
     119           0 :     to->length = from->length;
     120           0 :     to->data   = malloc(to->length * sizeof(to->data[0]));
     121           0 :     if(to->length != 0 && to->data == NULL)
     122           0 :         return ENOMEM;
     123           0 :     memcpy(to->data, from->data, to->length * sizeof(to->data[0]));
     124           0 :     return 0;
     125             : }
     126             : 
     127             : int
     128           0 : der_copy_visible_string (const heim_visible_string *from,
     129             :                          heim_visible_string *to)
     130             : {
     131           0 :     return der_copy_general_string(from, to);
     132             : }
     133             : 
     134             : int
     135     4666689 : der_copy_octet_string (const heim_octet_string *from, heim_octet_string *to)
     136             : {
     137     4666689 :     to->length = from->length;
     138     4666689 :     to->data   = malloc(to->length);
     139     4666689 :     if(to->length != 0 && to->data == NULL)
     140           0 :         return ENOMEM;
     141     4792861 :     memcpy(to->data, from->data, to->length);
     142     4666689 :     return 0;
     143             : }
     144             : 
     145             : int
     146         886 : der_copy_heim_integer (const heim_integer *from, heim_integer *to)
     147             : {
     148         886 :     to->length = from->length;
     149         886 :     to->data   = malloc(to->length);
     150         886 :     if(to->length != 0 && to->data == NULL)
     151           0 :         return ENOMEM;
     152         950 :     memcpy(to->data, from->data, to->length);
     153         886 :     to->negative = from->negative;
     154         886 :     return 0;
     155             : }
     156             : 
     157             : int
     158       10404 : der_copy_oid (const heim_oid *from, heim_oid *to)
     159             : {
     160       10404 :     to->length     = from->length;
     161       10404 :     to->components = malloc(to->length * sizeof(*to->components));
     162       10404 :     if (to->length != 0 && to->components == NULL)
     163           0 :         return ENOMEM;
     164       10828 :     memcpy(to->components, from->components,
     165        9980 :            to->length * sizeof(*to->components));
     166       10404 :     return 0;
     167             : }
     168             : 
     169             : int
     170         496 : der_copy_bit_string (const heim_bit_string *from, heim_bit_string *to)
     171             : {
     172             :     size_t len;
     173             : 
     174         496 :     len = (from->length + 7) / 8;
     175         496 :     to->length = from->length;
     176         496 :     to->data   = malloc(len);
     177         496 :     if(len != 0 && to->data == NULL)
     178           0 :         return ENOMEM;
     179         528 :     memcpy(to->data, from->data, len);
     180         496 :     return 0;
     181             : }

Generated by: LCOV version 1.13