Changeset 4057

Show
Ignore:
Timestamp:
06/04/07 12:38:00 (7 years ago)
Author:
piers
Message:

Fixed problems from last change - now properly fails-over to non-encryption is key is garbled.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • common/trunk/src/mbus_config.c

    r4054 r4057  
    405405                                key->key_len = strlen(key->key); 
    406406                                tmp = (char *) xmalloc(key->key_len); 
    407                                 key->key = tmp; 
    408407                                if ((key->key_len = base64decode((unsigned char *)key->key, key->key_len, (unsigned char *)tmp, key->key_len))==-1) { 
    409408                                  debug_msg("Error in base64decode  of key from file - using NO encyption\n"); 
    410409                                  key->key     = NULL; 
    411410                                  key->key_len = 0; 
     411                                } else { 
     412                                  key->key = tmp; 
    412413                                } 
    413414                        } else { 
     
    456457                key->key_len = strlen(key->key); 
    457458                tmp = (char *) xmalloc(key->key_len); 
    458                 key->key_len = base64decode(key->key, key->key_len, tmp, key->key_len); 
    459                 key->key = tmp; 
     459                if ((key->key_len = base64decode((unsigned char *)key->key, key->key_len, (unsigned char *)tmp, key->key_len))==-1) { 
     460                  debug_msg("Error in base64decode  of key from file - using NO encyption\n"); 
     461                  key->key     = NULL; 
     462                  key->key_len = 0; 
     463                } else { 
     464                  key->key = tmp; 
     465                } 
    460466        } else { 
    461467                key->key     = NULL; 
     
    466472        mbus_get_key(m, key, "ENCRYPTIONKEY=("); 
    467473#endif 
    468         if (strcmp(key->algorithm, "DES") == 0) { 
     474        if ((strcmp(key->algorithm, "DES")  == 0) && (key->key_len!=0)) { 
    469475                assert(key->key != NULL); 
    470476                assert(key->key_len == 8); 
     
    514520        /* Decode the key... */ 
    515521        tmp = (char *) xmalloc(key->key_len); 
    516         key->key_len = base64decode(key->key, key->key_len, tmp, key->key_len); 
    517         key->key = tmp; 
     522        if ((key->key_len = base64decode((unsigned char *)key->key, key->key_len, (unsigned char *)tmp, key->key_len))==-1) { 
     523          debug_msg("Error in base64decode  of key from file - using NO encyption\n"); 
     524          key->key     = NULL; 
     525          key->key_len = 0; 
     526        } else { 
     527          key->key = tmp; 
     528        } 
    518529 
    519530        xfree(buffer);