Changeset 396

Show
Ignore:
Timestamp:
03/03/06 11:43:57
Author:
ben
Message:

Handle accumulation correctly.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • openpgpsdk/trunk/src/accumulate.c

    r395 r396  
    1818    { 
    1919    ops_keyring_t *keyring; 
    20     ops_boolean_t accumulating:1; 
    2120    } accumulate_arg_t; 
    2221 
     
    3029    const ops_parser_content_union_t *content=&content_->content; 
    3130    ops_keyring_t *keyring=arg->keyring; 
    32     ops_key_data_t *cur=&keyring->keys[keyring->nkeys]
     31    ops_key_data_t *cur=NULL
    3332    const ops_public_key_t *pkey; 
     33 
     34    if(keyring->nkeys >= 0) 
     35        cur=&keyring->keys[keyring->nkeys]; 
    3436 
    3537    switch(content_->tag) 
    3638        { 
    37     case OPS_PARSER_PTAG: 
    38         arg->accumulating=ops_false; 
    39         break; 
    40  
    4139    case OPS_PTAG_CT_PUBLIC_KEY: 
    4240    case OPS_PTAG_CT_SECRET_KEY: 
    4341    case OPS_PTAG_CT_ENCRYPTED_SECRET_KEY: 
    4442        //      printf("New key\n"); 
    45         arg->accumulating=ops_true; 
    4643        ++keyring->nkeys; 
    4744        EXPAND_ARRAY(keyring,keys); 
     
    6865    case OPS_PTAG_CT_USER_ID: 
    6966        //      printf("User ID: %s\n",content->user_id.user_id); 
    70         assert(arg->accumulating); 
     67        assert(cur); 
    7168        EXPAND_ARRAY(cur,uids); 
    7269        cur->uids[cur->nuids++]=content->user_id; 
     
    7471 
    7572    case OPS_PARSER_PACKET_END: 
    76         if(!arg->accumulating
     73        if(!cur
    7774            return OPS_RELEASE_MEMORY; 
    7875