~clint-fewbar/ubuntu/precise/squid3/ignore-sighup-early

« back to all changes in this revision

Viewing changes to src/ssl/certificate_db.cc

  • Committer: Package Import Robot
  • Author(s): Luigi Gangitano
  • Date: 2011-09-02 13:33:41 UTC
  • mto: (21.2.8 sid)
  • mto: This revision was merged to the branch mainline in revision 30.
  • Revision ID: package-import@ubuntu.com-20110902133341-56p01dh4mh6e308v
Tags: upstream-3.1.15
ImportĀ upstreamĀ versionĀ 3.1.15

Show diffs side-by-side

added added

removed removed

Lines of Context:
394
394
        corrupt = true;
395
395
 
396
396
    // Create indexes in db.
 
397
#if OPENSSL_VERSION_NUMBER > 0x10000000L
 
398
    if (!corrupt && !TXT_DB_create_index(temp_db.get(), cnlSerial, NULL, LHASH_HASH_FN(index_serial), LHASH_COMP_FN(index_serial)))
 
399
        corrupt = true;
 
400
 
 
401
    if (!corrupt && !TXT_DB_create_index(temp_db.get(), cnlName, NULL, LHASH_HASH_FN(index_name), LHASH_COMP_FN(index_name)))
 
402
        corrupt = true;
 
403
#else
397
404
    if (!corrupt && !TXT_DB_create_index(temp_db.get(), cnlSerial, NULL, LHASH_HASH_FN(index_serial_hash), LHASH_COMP_FN(index_serial_cmp)))
398
405
        corrupt = true;
399
406
 
400
407
    if (!corrupt && !TXT_DB_create_index(temp_db.get(), cnlName, NULL, LHASH_HASH_FN(index_name_hash), LHASH_COMP_FN(index_name_cmp)))
401
408
        corrupt = true;
 
409
#endif
402
410
 
403
411
    if (corrupt)
404
 
        throw std::runtime_error("The SSL certificate database " + db_path + " is curruted. Please rebuild");
 
412
        throw std::runtime_error("The SSL certificate database " + db_path + " is corrupted. Please rebuild");
405
413
 
406
414
    db.reset(temp_db.release());
407
415
}
426
434
        return false;
427
435
 
428
436
    bool removed_one = false;
 
437
#if OPENSSL_VERSION_NUMBER > 0x10000000L
 
438
    for (int i = 0; i < sk_OPENSSL_PSTRING_num(db.get()->data); i++) {
 
439
        const char ** current_row = ((const char **)sk_OPENSSL_PSTRING_value(db.get()->data, i));
 
440
#else
429
441
    for (int i = 0; i < sk_num(db.get()->data); i++) {
430
442
        const char ** current_row = ((const char **)sk_value(db.get()->data, i));
 
443
#endif
431
444
 
432
445
        if (!sslDateIsInTheFuture(current_row[cnlExp_date])) {
433
446
            std::string filename(cert_full + "/" + current_row[cnlSerial] + ".pem");
434
447
            FileLocker cert_locker(filename);
 
448
#if OPENSSL_VERSION_NUMBER > 0x10000000L
 
449
            sk_OPENSSL_PSTRING_delete(db.get()->data, i);
 
450
#else
435
451
            sk_delete(db.get()->data, i);
 
452
#endif
436
453
            subSize(filename);
437
454
            remove(filename.c_str());
438
455
            removed_one = true;
450
467
    if (!db)
451
468
        return false;
452
469
 
 
470
#if OPENSSL_VERSION_NUMBER > 0x10000000L
 
471
    if (sk_OPENSSL_PSTRING_num(db.get()->data) == 0)
 
472
#else
453
473
    if (sk_num(db.get()->data) == 0)
 
474
#endif
454
475
        return false;
455
476
 
456
 
    std::string filename(cert_full + "/" + ((const char **)sk_value(db.get()->data, 0))[cnlSerial] + ".pem");
 
477
#if OPENSSL_VERSION_NUMBER > 0x10000000L
 
478
    const char **row = (const char **)sk_OPENSSL_PSTRING_value(db.get()->data, 0);
 
479
#else
 
480
    const char **row = (const char **)sk_value(db.get()->data, 0);
 
481
#endif
 
482
    std::string filename(cert_full + "/" + row[cnlSerial] + ".pem");
457
483
    FileLocker cert_locker(filename);
 
484
 
 
485
#if OPENSSL_VERSION_NUMBER > 0x10000000L
 
486
    sk_OPENSSL_PSTRING_delete(db.get()->data, 0);
 
487
#else
458
488
    sk_delete(db.get()->data, 0);
 
489
#endif
 
490
 
459
491
    subSize(filename);
460
492
    remove(filename.c_str());
461
493
 
467
499
    if (!db)
468
500
        return false;
469
501
 
 
502
#if OPENSSL_VERSION_NUMBER > 0x10000000L
 
503
    for (int i = 0; i < sk_OPENSSL_PSTRING_num(db.get()->data); i++) {
 
504
        const char ** current_row = ((const char **)sk_OPENSSL_PSTRING_value(db.get()->data, i));
 
505
#else
470
506
    for (int i = 0; i < sk_num(db.get()->data); i++) {
471
507
        const char ** current_row = ((const char **)sk_value(db.get()->data, i));
 
508
#endif
472
509
        if (host == current_row[cnlName]) {
473
510
            std::string filename(cert_full + "/" + current_row[cnlSerial] + ".pem");
474
511
            FileLocker cert_locker(filename);
 
512
#if OPENSSL_VERSION_NUMBER > 0x10000000L
 
513
            sk_OPENSSL_PSTRING_delete(db.get()->data, i);
 
514
#else
475
515
            sk_delete(db.get()->data, i);
 
516
#endif
476
517
            subSize(filename);
477
518
            remove(filename.c_str());
478
519
            return true;