/mandos/release

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/release

« back to all changes in this revision

Viewing changes to plugins.d/password-request.c

merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
76
76
 
77
77
bool debug = false;
78
78
static const char *keydir = "/conf/conf.d/mandos";
 
79
static const char mandos_protocol_version[] = "1";
79
80
const char *argp_program_version = "mandosclient 0.9";
80
81
const char *argp_program_bug_address = "<mandos@fukt.bsnet.se>";
81
 
static const char mandos_protocol_version[] = "1";
82
82
 
83
83
/* Used for passing in values through the Avahi callback functions */
84
84
typedef struct {
90
90
  const char *priority;
91
91
} mandos_context;
92
92
 
93
 
/* Make room in "buffer" for at least BUFFER_SIZE additional bytes.
 
93
/*
 
94
 * Make room in "buffer" for at least BUFFER_SIZE additional bytes.
94
95
 * "buffer_capacity" is how much is currently allocated,
95
 
 * "buffer_length" is how much is already used. */
 
96
 * "buffer_length" is how much is already used.
 
97
 */
96
98
size_t adjustbuffer(char **buffer, size_t buffer_length,
97
99
                  size_t buffer_capacity){
98
100
  if (buffer_length + BUFFER_SIZE > buffer_capacity){
317
319
      != GNUTLS_E_SUCCESS) {
318
320
    fprintf (stderr, "GnuTLS memory error: %s\n",
319
321
             safer_gnutls_strerror(ret));
 
322
    gnutls_global_deinit ();
320
323
    return -1;
321
324
  }
322
325
  
334
337
            " '%s')\n", ret, pubkeyfile, seckeyfile);
335
338
    fprintf(stdout, "The GnuTLS error is: %s\n",
336
339
            safer_gnutls_strerror(ret));
337
 
    return -1;
 
340
    goto globalfail;
338
341
  }
339
342
  
340
343
  /* GnuTLS server initialization */
342
345
  if (ret != GNUTLS_E_SUCCESS) {
343
346
    fprintf (stderr, "Error in GnuTLS DH parameter initialization:"
344
347
             " %s\n", safer_gnutls_strerror(ret));
345
 
    return -1;
 
348
    goto globalfail;
346
349
  }
347
350
  ret = gnutls_dh_params_generate2(mc->dh_params, mc->dh_bits);
348
351
  if (ret != GNUTLS_E_SUCCESS) {
349
352
    fprintf (stderr, "Error in GnuTLS prime generation: %s\n",
350
353
             safer_gnutls_strerror(ret));
351
 
    return -1;
 
354
    goto globalfail;
352
355
  }
353
356
  
354
357
  gnutls_certificate_set_dh_params(mc->cred, mc->dh_params);
355
358
 
356
359
  return 0;
 
360
 
 
361
 globalfail:
 
362
 
 
363
  gnutls_certificate_free_credentials (mc->cred);
 
364
  gnutls_global_deinit ();
 
365
  return -1;
 
366
 
357
367
}
358
368
 
359
369
static int init_gnutls_session(mandos_context *mc,
373
383
      fprintf(stderr, "Syntax error at: %s\n", err);
374
384
      fprintf(stderr, "GnuTLS error: %s\n",
375
385
              safer_gnutls_strerror(ret));
 
386
      gnutls_deinit (*session);
376
387
      return -1;
377
388
    }
378
389
  }
382
393
  if (ret != GNUTLS_E_SUCCESS) {
383
394
    fprintf(stderr, "Error setting GnuTLS credentials: %s\n",
384
395
            safer_gnutls_strerror(ret));
 
396
    gnutls_deinit (*session);
385
397
    return -1;
386
398
  }
387
399
  
601
613
  free(buffer);
602
614
  close(tcp_sd);
603
615
  gnutls_deinit (session);
604
 
  gnutls_certificate_free_credentials (mc->cred);
605
 
  gnutls_global_deinit ();
606
616
  return retval;
607
617
}
608
618
 
739
749
    const char *seckeyfile = "seckey.txt";
740
750
    mandos_context mc = { .simple_poll = NULL, .server = NULL,
741
751
                          .dh_bits = 1024, .priority = "SECURE256"};
 
752
    bool gnutls_initalized = false;
742
753
    
743
754
    {
744
755
      struct argp_option options[] = {
844
855
    if (ret == -1){
845
856
      fprintf(stderr, "init_gnutls_global\n");
846
857
      goto end;
 
858
    } else {
 
859
      gnutls_initalized = true;
847
860
    }
848
861
 
849
862
    uid = getuid();
998
1011
        avahi_simple_poll_free(mc.simple_poll);
999
1012
    free(pubkeyfile);
1000
1013
    free(seckeyfile);
 
1014
 
 
1015
    if (gnutls_initalized){
 
1016
      gnutls_certificate_free_credentials (mc.cred);
 
1017
      gnutls_global_deinit ();
 
1018
    }
1001
1019
    
1002
1020
    return exitcode;
1003
1021
}