/mandos/trunk

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

« back to all changes in this revision

Viewing changes to plugins.d/mandos-client.c

  • Committer: Teddy Hogeborn
  • Date: 2014-03-23 19:55:18 UTC
  • Revision ID: teddy@recompile.se-20140323195518-amvoytwi12iheypo
Make mandos-client prefer /run/tmp over /tmp.

* plugins.d/mandos-client.c (init_gpgme): Add more const.
  (main): Make "tempdir" a pointer to the temporary directory, if one
          has been created, or NULL.  This also eliminates the need
          for the "tempdir_created" variable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
136
136
 
137
137
bool debug = false;
138
138
static const char mandos_protocol_version[] = "1";
139
 
const char *argp_program_version = "mandos-client " VERSION;
140
 
const char *argp_program_bug_address = "<mandos@recompile.se>";
 
139
const char * argp_program_version = "mandos-client " VERSION;
 
140
const char * argp_program_bug_address = "<mandos@recompile.se>";
141
141
static const char sys_class_net[] = "/sys/class/net";
142
142
char *connect_to = NULL;
143
143
const char *hookdir = HOOKDIR;
258
258
 * Initialize GPGME.
259
259
 */
260
260
__attribute__((nonnull, warn_unused_result))
261
 
static bool init_gpgme(const char *seckey, const char *pubkey,
262
 
                       const char *tempdir, mandos_context *mc){
 
261
static bool init_gpgme(const char * const seckey,
 
262
                       const char * const pubkey,
 
263
                       const char * const tempdir,
 
264
                       mandos_context *mc){
263
265
  gpgme_error_t rc;
264
266
  gpgme_engine_info_t engine_info;
265
267
  
266
268
  /*
267
269
   * Helper function to insert pub and seckey to the engine keyring.
268
270
   */
269
 
  bool import_key(const char *filename){
 
271
  bool import_key(const char * const filename){
270
272
    int ret;
271
273
    int fd;
272
274
    gpgme_data_t pgp_data;
1871
1873
  int exitcode = EXIT_SUCCESS;
1872
1874
  char *interfaces_to_take_down = NULL;
1873
1875
  size_t interfaces_to_take_down_size = 0;
1874
 
  char tempdir[] = "/tmp/mandosXXXXXX";
1875
 
  bool tempdir_created = false;
 
1876
  char run_tempdir[] = "/run/tmp/mandosXXXXXX";
 
1877
  char old_tempdir[] = "/tmp/mandosXXXXXX";
 
1878
  char *tempdir = NULL;
1876
1879
  AvahiIfIndex if_index = AVAHI_IF_UNSPEC;
1877
1880
  const char *seckey = PATHDIR "/" SECKEY;
1878
1881
  const char *pubkey = PATHDIR "/" PUBKEY;
2327
2330
    goto end;
2328
2331
  }
2329
2332
  
2330
 
  if(mkdtemp(tempdir) == NULL){
 
2333
  /* Try /run/tmp before /tmp */
 
2334
  tempdir = mkdtemp(run_tempdir);
 
2335
  if(tempdir == NULL and errno == ENOENT){
 
2336
      if(debug){
 
2337
        fprintf_plus(stderr, "Tempdir %s did not work, trying %s\n",
 
2338
                     run_tempdir, old_tempdir);
 
2339
      }
 
2340
      tempdir = mkdtemp(old_tempdir);
 
2341
  }
 
2342
  if(tempdir == NULL){
2331
2343
    perror_plus("mkdtemp");
2332
2344
    goto end;
2333
2345
  }
2334
 
  tempdir_created = true;
2335
2346
  
2336
2347
  if(quit_now){
2337
2348
    goto end;
2559
2570
  free(interfaces_hooks);
2560
2571
  
2561
2572
  /* Removes the GPGME temp directory and all files inside */
2562
 
  if(tempdir_created){
 
2573
  if(tempdir != NULL){
2563
2574
    struct dirent **direntries = NULL;
2564
2575
    struct dirent *direntry = NULL;
2565
2576
    int numentries = scandir(tempdir, &direntries, notdotentries,