/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-07-25 23:16:04 UTC
  • mto: This revision was merged to the branch mainline in revision 724.
  • Revision ID: teddy@recompile.se-20140725231604-f5c4f82rn2o5ll1k
Use the .items() method instead of .iteritems().

This is strictly not a Python 2.7 change, but Python 2.7 backported
the new .viewitems() from Python 3, and instead of changing .items()
to .viewitems() and later having to change them all into .items()
again in Python 3, I opted to just change all .iteritems() to .items()
so the code will work both now and with Python 3.  The slowdown with
Python 2 is not significant, and with Python 3 it will again be fast.

* mandos (Client.__init__): Use .items() instead of .iteritems().
  (DBusObjectWithProperties.Introspect): - '' -
  (alternate_dbus_interfaces/wrapper): - '' -
  (main): - '' -
* mandos-ctl (main): - '' -

Show diffs side-by-side

added added

removed removed

Lines of Context:
234
234
                          .af = af };
235
235
  if(new_server->ip == NULL){
236
236
    perror_plus("strdup");
 
237
    free(new_server);
237
238
    return false;
238
239
  }
239
240
  ret = clock_gettime(CLOCK_MONOTONIC, &(new_server->last_seen));
240
241
  if(ret == -1){
241
242
    perror_plus("clock_gettime");
 
243
#ifdef __GNUC__
 
244
#pragma GCC diagnostic push
 
245
#pragma GCC diagnostic ignored "-Wcast-qual"
 
246
#endif
 
247
    free((char *)(new_server->ip));
 
248
#ifdef __GNUC__
 
249
#pragma GCC diagnostic pop
 
250
#endif
 
251
    free(new_server);
242
252
    return false;
243
253
  }
244
254
  /* Special case of first server */
1066
1076
     timed out */
1067
1077
  
1068
1078
  if(quit_now){
 
1079
    avahi_s_service_resolver_free(r);
1069
1080
    return;
1070
1081
  }
1071
1082
  
1458
1469
  error_t ret_errno = 0;
1459
1470
  if(seteuid(0) == -1){
1460
1471
    ret_errno = errno;
1461
 
    perror_plus("seteuid");
1462
1472
  }
1463
1473
  errno = old_errno;
1464
1474
  return ret_errno;
1475
1485
  }
1476
1486
  if(setuid(0) == -1){
1477
1487
    ret_errno = errno;
1478
 
    perror_plus("seteuid");
1479
1488
  }
1480
1489
  errno = old_errno;
1481
1490
  return ret_errno;
1488
1497
  error_t ret_errno = 0;
1489
1498
  if(seteuid(uid) == -1){
1490
1499
    ret_errno = errno;
1491
 
    perror_plus("seteuid");
1492
1500
  }
1493
1501
  errno = old_errno;
1494
1502
  return ret_errno;
1501
1509
  error_t ret_errno = 0;
1502
1510
  if(setuid(uid) == -1){
1503
1511
    ret_errno = errno;
1504
 
    perror_plus("setuid");
1505
1512
  }
1506
1513
  errno = old_errno;
1507
1514
  return ret_errno;
1554
1561
    if(hook_pid == 0){
1555
1562
      /* Child */
1556
1563
      /* Raise privileges */
1557
 
      if(raise_privileges_permanently() != 0){
 
1564
      errno = raise_privileges_permanently();
 
1565
      if(errno != 0){
1558
1566
        perror_plus("Failed to raise privileges");
1559
1567
        _exit(EX_NOPERM);
1560
1568
      }
1645
1653
      int status;
1646
1654
      if(TEMP_FAILURE_RETRY(waitpid(hook_pid, &status, 0)) == -1){
1647
1655
        perror_plus("waitpid");
 
1656
        free(direntry);
1648
1657
        continue;
1649
1658
      }
1650
1659
      if(WIFEXITED(status)){
1652
1661
          fprintf_plus(stderr, "Warning: network hook \"%s\" exited"
1653
1662
                       " with status %d\n", direntry->d_name,
1654
1663
                       WEXITSTATUS(status));
 
1664
          free(direntry);
1655
1665
          continue;
1656
1666
        }
1657
1667
      } else if(WIFSIGNALED(status)){
1658
1668
        fprintf_plus(stderr, "Warning: network hook \"%s\" died by"
1659
1669
                     " signal %d\n", direntry->d_name,
1660
1670
                     WTERMSIG(status));
 
1671
        free(direntry);
1661
1672
        continue;
1662
1673
      } else {
1663
1674
        fprintf_plus(stderr, "Warning: network hook \"%s\""
1664
1675
                     " crashed\n", direntry->d_name);
 
1676
        free(direntry);
1665
1677
        continue;
1666
1678
      }
1667
1679
    }
1669
1681
      fprintf_plus(stderr, "Network hook \"%s\" ran successfully\n",
1670
1682
                   direntry->d_name);
1671
1683
    }
 
1684
    free(direntry);
1672
1685
  }
1673
1686
  free(direntries);
1674
1687
  if((int)TEMP_FAILURE_RETRY(close(hookdir_fd)) == -1){
1733
1746
    /* Raise privileges */
1734
1747
    ret_errno = raise_privileges();
1735
1748
    if(ret_errno != 0){
 
1749
      errno = ret_errno;
1736
1750
      perror_plus("Failed to raise privileges");
1737
1751
    }
1738
1752
    
1842
1856
    /* Raise privileges */
1843
1857
    ret_errno = raise_privileges();
1844
1858
    if(ret_errno != 0){
 
1859
      errno = ret_errno;
1845
1860
      perror_plus("Failed to raise privileges");
1846
1861
    }
1847
1862
    
2266
2281
        if(ret_errno != 0){
2267
2282
          errno = ret_errno;
2268
2283
          perror_plus("argz_add");
 
2284
          free(direntries[i]);
2269
2285
          continue;
2270
2286
        }
2271
2287
        if(debug){
2272
2288
          fprintf_plus(stderr, "Will use interface \"%s\"\n",
2273
2289
                       direntries[i]->d_name);
2274
2290
        }
 
2291
        free(direntries[i]);
2275
2292
      }
2276
2293
      free(direntries);
2277
2294
    } else {
2547
2564
    mc.current_server->prev->next = NULL;
2548
2565
    while(mc.current_server != NULL){
2549
2566
      server *next = mc.current_server->next;
 
2567
#ifdef __GNUC__
 
2568
#pragma GCC diagnostic push
 
2569
#pragma GCC diagnostic ignored "-Wcast-qual"
 
2570
#endif
 
2571
      free((char *)(mc.current_server->ip));
 
2572
#ifdef __GNUC__
 
2573
#pragma GCC diagnostic pop
 
2574
#endif
2550
2575
      free(mc.current_server);
2551
2576
      mc.current_server = next;
2552
2577
    }
2556
2581
  {
2557
2582
    ret_errno = raise_privileges();
2558
2583
    if(ret_errno != 0){
 
2584
      errno = ret_errno;
2559
2585
      perror_plus("Failed to raise privileges");
2560
2586
    } else {
2561
2587
      
2584
2610
    
2585
2611
    ret_errno = lower_privileges_permanently();
2586
2612
    if(ret_errno != 0){
 
2613
      errno = ret_errno;
2587
2614
      perror_plus("Failed to lower privileges permanently");
2588
2615
    }
2589
2616
  }
2619
2646
                         " \"%s\", 0): %s\n", tempdir,
2620
2647
                         direntries[i]->d_name, strerror(errno));
2621
2648
          }
 
2649
          free(direntries[i]);
2622
2650
        }
2623
2651
        
2624
2652
        /* need to clean even if 0 because man page doesn't specify */