/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: 2012-06-09 23:41:07 UTC
  • mto: This revision was merged to the branch mainline in revision 596.
  • Revision ID: teddy@recompile.se-20120609234107-vm6zilzz0y6aihsm
* plugins.d/mandos-client.c (raise_privileges,
  raise_privileges_permanently, lower_privileges): Return error_t and
                                                   save old errno
                                                   before calling any
                                                   other function.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1393
1393
}
1394
1394
 
1395
1395
/* Set effective uid to 0, return errno */
1396
 
int raise_privileges(void){
1397
 
  int old_errno = errno;
1398
 
  int ret_errno = 0;
1399
 
  errno = 0;
 
1396
error_t raise_privileges(void){
 
1397
  error_t old_errno = errno;
 
1398
  error_t ret_errno = 0;
1400
1399
  if(seteuid(0) == -1){
 
1400
    ret_errno = errno;
1401
1401
    perror_plus("seteuid");
1402
1402
  }
1403
 
  ret_errno = errno;
1404
1403
  errno = old_errno;
1405
1404
  return ret_errno;
1406
1405
}
1407
1406
 
1408
1407
/* Set effective and real user ID to 0.  Return errno. */
1409
 
int raise_privileges_permanently(void){
1410
 
  int old_errno = errno;
1411
 
  int ret_errno = raise_privileges();
 
1408
error_t raise_privileges_permanently(void){
 
1409
  error_t old_errno = errno;
 
1410
  error_t ret_errno = raise_privileges();
1412
1411
  if(ret_errno != 0){
1413
1412
    errno = old_errno;
1414
1413
    return ret_errno;
1415
1414
  }
1416
 
  errno = 0;
1417
1415
  if(setuid(0) == -1){
 
1416
    ret_errno = errno;
1418
1417
    perror_plus("seteuid");
1419
1418
  }
1420
 
  ret_errno = errno;
1421
1419
  errno = old_errno;
1422
1420
  return ret_errno;
1423
1421
}
1424
1422
 
1425
1423
/* Set effective user ID to unprivileged saved user ID */
1426
 
int lower_privileges(void){
1427
 
  int old_errno = errno;
1428
 
  int ret_errno = 0;
1429
 
  errno = 0;
 
1424
error_t lower_privileges(void){
 
1425
  error_t old_errno = errno;
 
1426
  error_t ret_errno = 0;
1430
1427
  if(seteuid(uid) == -1){
 
1428
    ret_errno = errno;
1431
1429
    perror_plus("seteuid");
1432
1430
  }
1433
 
  ret_errno = errno;
1434
1431
  errno = old_errno;
1435
1432
  return ret_errno;
1436
1433
}
1561
1558
  return true;
1562
1559
}
1563
1560
 
1564
 
int bring_up_interface(const char * const interface, const float delay){
 
1561
int bring_up_interface(const char *const interface,
 
1562
                       const float delay){
1565
1563
  int sd = -1;
1566
1564
  int old_errno = errno;
1567
1565
  int ret_errno = 0;