diff options
Diffstat (limited to 'kerberosV/lib/hdb/asn1_hdb_entry.c')
-rw-r--r-- | kerberosV/lib/hdb/asn1_hdb_entry.c | 814 |
1 files changed, 0 insertions, 814 deletions
diff --git a/kerberosV/lib/hdb/asn1_hdb_entry.c b/kerberosV/lib/hdb/asn1_hdb_entry.c deleted file mode 100644 index 2061702db5a..00000000000 --- a/kerberosV/lib/hdb/asn1_hdb_entry.c +++ /dev/null @@ -1,814 +0,0 @@ -/* Generated from /usr/src/kerberosV/lib/hdb/../../src/lib/hdb/hdb.asn1 */ -/* Do not edit */ - -#include <stdio.h> -#include <stdlib.h> -#include <time.h> -#include <string.h> -#include <errno.h> -#include <krb5_asn1.h> -#include <hdb_asn1.h> -#include <asn1_err.h> -#include <der.h> -#include <parse_units.h> - -#define BACK if (e) return e; p -= l; len -= l; ret += l - -int -encode_hdb_entry(unsigned char *p, size_t len, const hdb_entry *data, size_t *size) -{ -size_t ret = 0; -size_t l; -int i, e; - -i = 0; -if((data)->generation) -{ -int oldret = ret; -ret = 0; -e = encode_GENERATION(p, len, (data)->generation, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 12, &l); -BACK; -ret += oldret; -} -if((data)->etypes) -{ -int oldret = ret; -ret = 0; -for(i = ((data)->etypes)->len - 1; i >= 0; --i) { -int oldret = ret; -ret = 0; -e = encode_integer(p, len, &((data)->etypes)->val[i], &l); -BACK; -ret += oldret; -} -e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 11, &l); -BACK; -ret += oldret; -} -{ -int oldret = ret; -ret = 0; -e = encode_HDBFlags(p, len, &(data)->flags, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 10, &l); -BACK; -ret += oldret; -} -if((data)->max_renew) -{ -int oldret = ret; -ret = 0; -e = encode_integer(p, len, (data)->max_renew, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 9, &l); -BACK; -ret += oldret; -} -if((data)->max_life) -{ -int oldret = ret; -ret = 0; -e = encode_integer(p, len, (data)->max_life, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 8, &l); -BACK; -ret += oldret; -} -if((data)->pw_end) -{ -int oldret = ret; -ret = 0; -e = encode_KerberosTime(p, len, (data)->pw_end, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 7, &l); -BACK; -ret += oldret; -} -if((data)->valid_end) -{ -int oldret = ret; -ret = 0; -e = encode_KerberosTime(p, len, (data)->valid_end, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 6, &l); -BACK; -ret += oldret; -} -if((data)->valid_start) -{ -int oldret = ret; -ret = 0; -e = encode_KerberosTime(p, len, (data)->valid_start, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 5, &l); -BACK; -ret += oldret; -} -if((data)->modified_by) -{ -int oldret = ret; -ret = 0; -e = encode_Event(p, len, (data)->modified_by, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 4, &l); -BACK; -ret += oldret; -} -{ -int oldret = ret; -ret = 0; -e = encode_Event(p, len, &(data)->created_by, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 3, &l); -BACK; -ret += oldret; -} -{ -int oldret = ret; -ret = 0; -for(i = (&(data)->keys)->len - 1; i >= 0; --i) { -int oldret = ret; -ret = 0; -e = encode_Key(p, len, &(&(data)->keys)->val[i], &l); -BACK; -ret += oldret; -} -e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 2, &l); -BACK; -ret += oldret; -} -{ -int oldret = ret; -ret = 0; -e = encode_integer(p, len, &(data)->kvno, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 1, &l); -BACK; -ret += oldret; -} -if((data)->principal) -{ -int oldret = ret; -ret = 0; -e = encode_Principal(p, len, (data)->principal, &l); -BACK; -e = der_put_length_and_tag (p, len, ret, CONTEXT, CONS, 0, &l); -BACK; -ret += oldret; -} -e = der_put_length_and_tag (p, len, ret, UNIV, CONS, UT_Sequence, &l); -BACK; -*size = ret; -return 0; -} - -#define FORW if(e) goto fail; p += l; len -= l; ret += l - -int -decode_hdb_entry(const unsigned char *p, size_t len, hdb_entry *data, size_t *size) -{ -size_t ret = 0, reallen; -size_t l; -int e; - -memset(data, 0, sizeof(*data)); -reallen = 0; -e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l); -FORW; -{ -int dce_fix; -if((dce_fix = fix_dce(reallen, &len)) < 0) -return ASN1_BAD_FORMAT; -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 0, &l); -if (e) -(data)->principal = NULL; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -(data)->principal = malloc(sizeof(*(data)->principal)); -if((data)->principal == NULL) return ENOMEM; -e = decode_Principal(p, len, (data)->principal, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 1, &l); -if (e) -return e; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -e = decode_integer(p, len, &(data)->kvno, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 2, &l); -if (e) -return e; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l); -FORW; -if(len < reallen) -return ASN1_OVERRUN; -len = reallen; -{ -size_t origlen = len; -int oldret = ret; -ret = 0; -(&(data)->keys)->len = 0; -(&(data)->keys)->val = NULL; -while(ret < origlen) { -(&(data)->keys)->len++; -(&(data)->keys)->val = realloc((&(data)->keys)->val, sizeof(*((&(data)->keys)->val)) * (&(data)->keys)->len); -e = decode_Key(p, len, &(&(data)->keys)->val[(&(data)->keys)->len-1], &l); -FORW; -len = origlen - ret; -} -ret += oldret; -} -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 3, &l); -if (e) -return e; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -e = decode_Event(p, len, &(data)->created_by, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 4, &l); -if (e) -(data)->modified_by = NULL; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -(data)->modified_by = malloc(sizeof(*(data)->modified_by)); -if((data)->modified_by == NULL) return ENOMEM; -e = decode_Event(p, len, (data)->modified_by, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 5, &l); -if (e) -(data)->valid_start = NULL; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -(data)->valid_start = malloc(sizeof(*(data)->valid_start)); -if((data)->valid_start == NULL) return ENOMEM; -e = decode_KerberosTime(p, len, (data)->valid_start, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 6, &l); -if (e) -(data)->valid_end = NULL; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -(data)->valid_end = malloc(sizeof(*(data)->valid_end)); -if((data)->valid_end == NULL) return ENOMEM; -e = decode_KerberosTime(p, len, (data)->valid_end, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 7, &l); -if (e) -(data)->pw_end = NULL; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -(data)->pw_end = malloc(sizeof(*(data)->pw_end)); -if((data)->pw_end == NULL) return ENOMEM; -e = decode_KerberosTime(p, len, (data)->pw_end, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 8, &l); -if (e) -(data)->max_life = NULL; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -(data)->max_life = malloc(sizeof(*(data)->max_life)); -if((data)->max_life == NULL) return ENOMEM; -e = decode_integer(p, len, (data)->max_life, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 9, &l); -if (e) -(data)->max_renew = NULL; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -(data)->max_renew = malloc(sizeof(*(data)->max_renew)); -if((data)->max_renew == NULL) return ENOMEM; -e = decode_integer(p, len, (data)->max_renew, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 10, &l); -if (e) -return e; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -e = decode_HDBFlags(p, len, &(data)->flags, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 11, &l); -if (e) -(data)->etypes = NULL; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -(data)->etypes = malloc(sizeof(*(data)->etypes)); -if((data)->etypes == NULL) return ENOMEM; -e = der_match_tag_and_length (p, len, UNIV, CONS, UT_Sequence,&reallen, &l); -FORW; -if(len < reallen) -return ASN1_OVERRUN; -len = reallen; -{ -size_t origlen = len; -int oldret = ret; -ret = 0; -((data)->etypes)->len = 0; -((data)->etypes)->val = NULL; -while(ret < origlen) { -((data)->etypes)->len++; -((data)->etypes)->val = realloc(((data)->etypes)->val, sizeof(*(((data)->etypes)->val)) * ((data)->etypes)->len); -e = decode_integer(p, len, &((data)->etypes)->val[((data)->etypes)->len-1], &l); -FORW; -len = origlen - ret; -} -ret += oldret; -} -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -{ -size_t newlen, oldlen; - -e = der_match_tag (p, len, CONTEXT, CONS, 12, &l); -if (e) -(data)->generation = NULL; -else { -p += l; -len -= l; -ret += l; -e = der_get_length (p, len, &newlen, &l); -FORW; -{ -int dce_fix; -oldlen = len; -if((dce_fix = fix_dce(newlen, &len)) < 0)return ASN1_BAD_FORMAT; -(data)->generation = malloc(sizeof(*(data)->generation)); -if((data)->generation == NULL) return ENOMEM; -e = decode_GENERATION(p, len, (data)->generation, &l); -FORW; -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -}else -len = oldlen - newlen; -} -} -} -if(dce_fix){ -e = der_match_tag_and_length (p, len, (Der_class)0, (Der_type)0, 0, &reallen, &l); -FORW; -} -} -if(size) *size = ret; -return 0; -fail: -free_hdb_entry(data); -return e; -} - -void -free_hdb_entry(hdb_entry *data) -{ -if((data)->principal) { -free_Principal((data)->principal); -free((data)->principal); -} -while((&(data)->keys)->len){ -free_Key(&(&(data)->keys)->val[(&(data)->keys)->len-1]); -(&(data)->keys)->len--; -} -free((&(data)->keys)->val); -free_Event(&(data)->created_by); -if((data)->modified_by) { -free_Event((data)->modified_by); -free((data)->modified_by); -} -if((data)->valid_start) { -free_KerberosTime((data)->valid_start); -free((data)->valid_start); -} -if((data)->valid_end) { -free_KerberosTime((data)->valid_end); -free((data)->valid_end); -} -if((data)->pw_end) { -free_KerberosTime((data)->pw_end); -free((data)->pw_end); -} -if((data)->max_life) { -free((data)->max_life); -} -if((data)->max_renew) { -free((data)->max_renew); -} -free_HDBFlags(&(data)->flags); -if((data)->etypes) { -while(((data)->etypes)->len){ -((data)->etypes)->len--; -} -free(((data)->etypes)->val); -free((data)->etypes); -} -if((data)->generation) { -free_GENERATION((data)->generation); -free((data)->generation); -} -} - -size_t -length_hdb_entry(const hdb_entry *data) -{ -size_t ret = 0; -if((data)->principal){ -int oldret = ret; -ret = 0; -ret += length_Principal((data)->principal); -ret += 1 + length_len(ret) + oldret; -} -{ -int oldret = ret; -ret = 0; -ret += length_integer(&(data)->kvno); -ret += 1 + length_len(ret) + oldret; -} -{ -int oldret = ret; -ret = 0; -{ -int oldret = ret; -int i; -ret = 0; -for(i = (&(data)->keys)->len - 1; i >= 0; --i){ -ret += length_Key(&(&(data)->keys)->val[i]); -} -ret += 1 + length_len(ret) + oldret; -} -ret += 1 + length_len(ret) + oldret; -} -{ -int oldret = ret; -ret = 0; -ret += length_Event(&(data)->created_by); -ret += 1 + length_len(ret) + oldret; -} -if((data)->modified_by){ -int oldret = ret; -ret = 0; -ret += length_Event((data)->modified_by); -ret += 1 + length_len(ret) + oldret; -} -if((data)->valid_start){ -int oldret = ret; -ret = 0; -ret += length_KerberosTime((data)->valid_start); -ret += 1 + length_len(ret) + oldret; -} -if((data)->valid_end){ -int oldret = ret; -ret = 0; -ret += length_KerberosTime((data)->valid_end); -ret += 1 + length_len(ret) + oldret; -} -if((data)->pw_end){ -int oldret = ret; -ret = 0; -ret += length_KerberosTime((data)->pw_end); -ret += 1 + length_len(ret) + oldret; -} -if((data)->max_life){ -int oldret = ret; -ret = 0; -ret += length_integer((data)->max_life); -ret += 1 + length_len(ret) + oldret; -} -if((data)->max_renew){ -int oldret = ret; -ret = 0; -ret += length_integer((data)->max_renew); -ret += 1 + length_len(ret) + oldret; -} -{ -int oldret = ret; -ret = 0; -ret += length_HDBFlags(&(data)->flags); -ret += 1 + length_len(ret) + oldret; -} -if((data)->etypes){ -int oldret = ret; -ret = 0; -{ -int oldret = ret; -int i; -ret = 0; -for(i = ((data)->etypes)->len - 1; i >= 0; --i){ -ret += length_integer(&((data)->etypes)->val[i]); -} -ret += 1 + length_len(ret) + oldret; -} -ret += 1 + length_len(ret) + oldret; -} -if((data)->generation){ -int oldret = ret; -ret = 0; -ret += length_GENERATION((data)->generation); -ret += 1 + length_len(ret) + oldret; -} -ret += 1 + length_len(ret); -return ret; -} - -int -copy_hdb_entry(const hdb_entry *from, hdb_entry *to) -{ -if((from)->principal) { -(to)->principal = malloc(sizeof(*(to)->principal)); -if((to)->principal == NULL) return ENOMEM; -if(copy_Principal((from)->principal, (to)->principal)) return ENOMEM; -}else -(to)->principal = NULL; -*(&(to)->kvno) = *(&(from)->kvno); -if(((&(to)->keys)->val = malloc((&(from)->keys)->len * sizeof(*(&(to)->keys)->val))) == NULL && (&(from)->keys)->len != 0) -return ENOMEM; -for((&(to)->keys)->len = 0; (&(to)->keys)->len < (&(from)->keys)->len; (&(to)->keys)->len++){ -if(copy_Key(&(&(from)->keys)->val[(&(to)->keys)->len], &(&(to)->keys)->val[(&(to)->keys)->len])) return ENOMEM; -} -if(copy_Event(&(from)->created_by, &(to)->created_by)) return ENOMEM; -if((from)->modified_by) { -(to)->modified_by = malloc(sizeof(*(to)->modified_by)); -if((to)->modified_by == NULL) return ENOMEM; -if(copy_Event((from)->modified_by, (to)->modified_by)) return ENOMEM; -}else -(to)->modified_by = NULL; -if((from)->valid_start) { -(to)->valid_start = malloc(sizeof(*(to)->valid_start)); -if((to)->valid_start == NULL) return ENOMEM; -if(copy_KerberosTime((from)->valid_start, (to)->valid_start)) return ENOMEM; -}else -(to)->valid_start = NULL; -if((from)->valid_end) { -(to)->valid_end = malloc(sizeof(*(to)->valid_end)); -if((to)->valid_end == NULL) return ENOMEM; -if(copy_KerberosTime((from)->valid_end, (to)->valid_end)) return ENOMEM; -}else -(to)->valid_end = NULL; -if((from)->pw_end) { -(to)->pw_end = malloc(sizeof(*(to)->pw_end)); -if((to)->pw_end == NULL) return ENOMEM; -if(copy_KerberosTime((from)->pw_end, (to)->pw_end)) return ENOMEM; -}else -(to)->pw_end = NULL; -if((from)->max_life) { -(to)->max_life = malloc(sizeof(*(to)->max_life)); -if((to)->max_life == NULL) return ENOMEM; -*((to)->max_life) = *((from)->max_life); -}else -(to)->max_life = NULL; -if((from)->max_renew) { -(to)->max_renew = malloc(sizeof(*(to)->max_renew)); -if((to)->max_renew == NULL) return ENOMEM; -*((to)->max_renew) = *((from)->max_renew); -}else -(to)->max_renew = NULL; -if(copy_HDBFlags(&(from)->flags, &(to)->flags)) return ENOMEM; -if((from)->etypes) { -(to)->etypes = malloc(sizeof(*(to)->etypes)); -if((to)->etypes == NULL) return ENOMEM; -if((((to)->etypes)->val = malloc(((from)->etypes)->len * sizeof(*((to)->etypes)->val))) == NULL && ((from)->etypes)->len != 0) -return ENOMEM; -for(((to)->etypes)->len = 0; ((to)->etypes)->len < ((from)->etypes)->len; ((to)->etypes)->len++){ -*(&((to)->etypes)->val[((to)->etypes)->len]) = *(&((from)->etypes)->val[((to)->etypes)->len]); -} -}else -(to)->etypes = NULL; -if((from)->generation) { -(to)->generation = malloc(sizeof(*(to)->generation)); -if((to)->generation == NULL) return ENOMEM; -if(copy_GENERATION((from)->generation, (to)->generation)) return ENOMEM; -}else -(to)->generation = NULL; -return 0; -} - |