mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=10340
This commit is contained in:
parent
2523a7b5d6
commit
e05a8ed187
|
@ -5934,18 +5934,6 @@ Rom 14 June 2006
|
||||||
lib/
|
lib/
|
||||||
diagnostics.C, .h
|
diagnostics.C, .h
|
||||||
|
|
||||||
Charlie 14 June 2006
|
|
||||||
- more sandbox stuff, with #ifdef SANDBOX:
|
|
||||||
Change projects, slots directories to boinc_master:boinc_master 0775.
|
|
||||||
Mac: I Manager creates BOINC Data directory set its permissions to 0575.
|
|
||||||
|
|
||||||
client/
|
|
||||||
file_names.C
|
|
||||||
clientgui/
|
|
||||||
BOINCGUIApp.cpp
|
|
||||||
mac/
|
|
||||||
SetupSecurity.cpp,h
|
|
||||||
|
|
||||||
Rom 14 June 2006
|
Rom 14 June 2006
|
||||||
- Reduce duplicate code in diagnostics.C.
|
- Reduce duplicate code in diagnostics.C.
|
||||||
- Display the detected CPU capabilities for those who want to
|
- Display the detected CPU capabilities for those who want to
|
||||||
|
@ -5956,3 +5944,23 @@ Rom 14 June 2006
|
||||||
lib/
|
lib/
|
||||||
diagnostics.C, .h
|
diagnostics.C, .h
|
||||||
|
|
||||||
|
Charlie 14 June 2006
|
||||||
|
- more sandbox stuff, with #ifdef SANDBOX:
|
||||||
|
Change projects, slots directories to boinc_master:boinc_master 0775.
|
||||||
|
Mac: I Manager creates BOINC Data directory set its permissions to 0575.
|
||||||
|
Manager checks ownership and permissions; if incorrect it alerts user
|
||||||
|
and quits.
|
||||||
|
|
||||||
|
client/
|
||||||
|
check_security.C (new)
|
||||||
|
file_names.C
|
||||||
|
clientgui/
|
||||||
|
BOINCGUIApp.cpp
|
||||||
|
mac/
|
||||||
|
SetupSecurity.cpp,h
|
||||||
|
lib/
|
||||||
|
util.h
|
||||||
|
mac_build/
|
||||||
|
boinc.xcodeproj/
|
||||||
|
project.pbxproj
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,131 @@
|
||||||
|
// Berkeley Open Infrastructure for Network Computing
|
||||||
|
// http://boinc.berkeley.edu
|
||||||
|
// Copyright (C) 2006 University of California
|
||||||
|
//
|
||||||
|
// This is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation;
|
||||||
|
// either version 2.1 of the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This software is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
// See the GNU Lesser General Public License for more details.
|
||||||
|
//
|
||||||
|
// To view the GNU Lesser General Public License visit
|
||||||
|
// http://www.gnu.org/copyleft/lesser.html
|
||||||
|
// or write to the Free Software Foundation, Inc.,
|
||||||
|
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
|
||||||
|
// check_security.C
|
||||||
|
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <pwd.h> // getpwnam
|
||||||
|
#include <grp.h>
|
||||||
|
#include <sys/param.h> // for MAXPATHLEN
|
||||||
|
#include "util.h"
|
||||||
|
#include "error_numbers.h"
|
||||||
|
|
||||||
|
#define boinc_master_name "boinc_master"
|
||||||
|
#define boinc_project_name "boinc_project"
|
||||||
|
|
||||||
|
|
||||||
|
// Returns FALSE (0) if owners and permissions are OK, else TRUE (1)
|
||||||
|
int check_security(int isManager) {
|
||||||
|
passwd *pw;
|
||||||
|
gid_t egid, rgid, boinc_master_gid, boinc_project_gid;
|
||||||
|
uid_t euid, ruid, boinc_master_uid, boinc_project_uid;
|
||||||
|
char *p;
|
||||||
|
group *grp;
|
||||||
|
int i;
|
||||||
|
char dir_path[MAXPATHLEN];
|
||||||
|
struct stat sbuf;
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
pw = getpwnam(boinc_master_name);
|
||||||
|
if (pw == NULL)
|
||||||
|
return ERR_USER_REJECTED; // User boinc_master does not exist
|
||||||
|
boinc_master_uid = pw->pw_uid;
|
||||||
|
|
||||||
|
pw = getpwnam(boinc_project_name);
|
||||||
|
if (pw == NULL)
|
||||||
|
return ERR_USER_REJECTED; // User boinc_project does not exist
|
||||||
|
boinc_project_uid = pw->pw_uid;
|
||||||
|
|
||||||
|
grp = getgrnam(boinc_master_name);
|
||||||
|
if (grp == NULL)
|
||||||
|
return ERR_GETGRNAM; // Group boinc_master does not exist
|
||||||
|
boinc_master_gid = grp->gr_gid;
|
||||||
|
|
||||||
|
grp = getgrnam(boinc_project_name);
|
||||||
|
if (grp == NULL)
|
||||||
|
return ERR_GETGRNAM; // Group boinc_project does not exist
|
||||||
|
boinc_project_gid = grp->gr_gid;
|
||||||
|
|
||||||
|
for (i=0; ; i++) { // Step through all users in group boinc_project
|
||||||
|
p = grp->gr_mem[i];
|
||||||
|
if (p == NULL)
|
||||||
|
return ERR_GETGRNAM; // User boinc_master is not a member of group boinc_project
|
||||||
|
if (strcmp(p, boinc_master_name) == 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
rgid = getgid();
|
||||||
|
egid = getegid();
|
||||||
|
if (egid != boinc_master_gid)
|
||||||
|
return ERR_USER_PERMISSION; // We should be running setgid boinc_master
|
||||||
|
|
||||||
|
ruid = getuid();
|
||||||
|
euid = geteuid();
|
||||||
|
if (! isManager) {
|
||||||
|
if (euid != boinc_master_uid)
|
||||||
|
return ERR_USER_PERMISSION; // BOINC Client should be running setuid boinc_master
|
||||||
|
}
|
||||||
|
|
||||||
|
getcwd(dir_path, sizeof(dir_path));
|
||||||
|
retval = stat(dir_path, &sbuf);
|
||||||
|
if (retval)
|
||||||
|
return retval;
|
||||||
|
|
||||||
|
// The top-level BOINC Data directory can have a different user if created by the Manager,
|
||||||
|
// but it should always have group boinc_master.
|
||||||
|
if (sbuf.st_gid != boinc_master_gid)
|
||||||
|
return ERR_USER_PERMISSION;
|
||||||
|
|
||||||
|
// The top-level BOINC Data directory should have permission 775 or 575
|
||||||
|
if ((sbuf.st_mode & 0575) != 0575)
|
||||||
|
return ERR_USER_PERMISSION;
|
||||||
|
|
||||||
|
getcwd(dir_path, sizeof(dir_path));
|
||||||
|
strlcat(dir_path, "/projects", MAXPATHLEN);
|
||||||
|
retval = stat(dir_path, &sbuf);
|
||||||
|
if (! retval) { // Client can create projects directory if it does not yet exist.
|
||||||
|
if (sbuf.st_gid != boinc_master_gid)
|
||||||
|
return ERR_USER_PERMISSION;
|
||||||
|
|
||||||
|
if (sbuf.st_uid != boinc_master_uid)
|
||||||
|
return ERR_USER_PERMISSION;
|
||||||
|
|
||||||
|
if ((sbuf.st_mode & 0775) != 0775)
|
||||||
|
return ERR_USER_PERMISSION;
|
||||||
|
}
|
||||||
|
|
||||||
|
getcwd(dir_path, sizeof(dir_path));
|
||||||
|
strlcat(dir_path, "/slots", MAXPATHLEN);
|
||||||
|
retval = stat(dir_path, &sbuf);
|
||||||
|
if (! retval) { // Client can create slots directory if it does not yet exist.
|
||||||
|
if (sbuf.st_gid != boinc_master_gid)
|
||||||
|
return ERR_USER_PERMISSION;
|
||||||
|
|
||||||
|
if (sbuf.st_uid != boinc_master_uid)
|
||||||
|
return ERR_USER_PERMISSION;
|
||||||
|
|
||||||
|
if ((sbuf.st_mode & 0775) != 0775)
|
||||||
|
return ERR_USER_PERMISSION;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -335,6 +335,16 @@ bool CBOINCGUIApp::OnInit() {
|
||||||
|
|
||||||
#endif // __WXMAC__
|
#endif // __WXMAC__
|
||||||
|
|
||||||
|
#ifdef SANDBOX
|
||||||
|
if (check_security(true)) {
|
||||||
|
wxMessageDialog* pDlg =
|
||||||
|
new wxMessageDialog(m_pFrame, wxT("BOINC ownership or permissions are not set properly; please reinstall BOINC"),wxT(""), wxOK);
|
||||||
|
pDlg->ShowModal();
|
||||||
|
if (pDlg)
|
||||||
|
pDlg->Destroy();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize the BOINC Diagnostics Framework
|
// Initialize the BOINC Diagnostics Framework
|
||||||
int dwDiagnosticsFlags =
|
int dwDiagnosticsFlags =
|
||||||
|
|
|
@ -95,7 +95,7 @@ OSStatus SetBOINCAppOwnersGroupsAndPermissions(char *path, char *managerName, Bo
|
||||||
|
|
||||||
// chmod -R u=rwsx,g=rwsx,o=rx path/BOINCManager.app
|
// chmod -R u=rwsx,g=rwsx,o=rx path/BOINCManager.app
|
||||||
// 0775 = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH
|
// 0775 = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH
|
||||||
// read, write and execute permission for user, group & others
|
// read, write and execute permission for user & group; read and execute permission for others
|
||||||
err = DoPrivilegedExec(chmodPath, "-R", "u=rwx,g=rwx,o=rx", fullpath, NULL, NULL);
|
err = DoPrivilegedExec(chmodPath, "-R", "u=rwx,g=rwx,o=rx", fullpath, NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
@ -192,18 +192,20 @@ OSStatus SetBOINCDataOwnersGroupsAndPermissions() {
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
#if 0 // Redundant if we already set BOINC Data directory to boinc_master:boinc_master
|
||||||
// Set owner and group of BOINC Data directory itself
|
// Set owner and group of BOINC Data directory itself
|
||||||
sprintf(buf1, "%s:%s", boinc_master_name, boinc_project_name);
|
sprintf(buf1, "%s:%s", boinc_master_name, boinc_master_name);
|
||||||
// chown boinc_master:boinc_project "/Library/Applications/BOINC Data"
|
// chown boinc_master:boinc_master "/Library/Applications/BOINC Data"
|
||||||
err = DoPrivilegedExec(chownPath, buf1, fullpath, NULL, NULL, NULL);
|
err = DoPrivilegedExec(chownPath, buf1, fullpath, NULL, NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Set permissions of BOINC Data directory itself
|
// Set permissions of BOINC Data directory itself
|
||||||
// chmod -R u+rwx,g=rx,o-rwx "/Library/Applications/BOINC Data"
|
// chmod -R u=rwsx,g=rwsx,o=rx "/Library/Applications/BOINC Data"
|
||||||
// 0750 = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP| S_IXGRP
|
// 0775 = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH
|
||||||
// set read, write, execute permission for user and group, no access for others
|
// read, write and execute permission for user & group; read and execute permission for others
|
||||||
err = DoPrivilegedExec(chmodPath, "u+rwx,g=rx,o-rwx", fullpath, NULL, NULL, NULL);
|
err = DoPrivilegedExec(chmodPath, "u=rwx,g=rwx,o=rx", fullpath, NULL, NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
@ -238,18 +240,25 @@ OSStatus SetBOINCDataOwnersGroupsAndPermissions() {
|
||||||
|
|
||||||
result = FSPathMakeRef((StringPtr)fullpath, &ref, &isDirectory);
|
result = FSPathMakeRef((StringPtr)fullpath, &ref, &isDirectory);
|
||||||
if ((result == noErr) && (isDirectory)) {
|
if ((result == noErr) && (isDirectory)) {
|
||||||
// Set owner and group of projects directory and all its contents
|
// Set owner and group of projects directory's contents
|
||||||
sprintf(buf1, "%s:%s", boinc_master_name, boinc_project_name);
|
sprintf(buf1, "%s:%s", boinc_master_name, boinc_project_name);
|
||||||
// chown boinc_master:boinc_project "/Library/Applications/BOINC Data/projects"
|
// chown boinc_master:boinc_project "/Library/Applications/BOINC Data/projects"
|
||||||
err = DoPrivilegedExec(chownPath, "-R", buf1, fullpath, NULL, NULL);
|
err = DoPrivilegedExec(chownPath, "-R", buf1, fullpath, NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
// Set owner and group of projects directory itself
|
||||||
|
sprintf(buf1, "%s:%s", boinc_master_name, boinc_master_name);
|
||||||
|
// chown boinc_master:boinc_master "/Library/Applications/BOINC Data/projects"
|
||||||
|
err = DoPrivilegedExec(chownPath, buf1, fullpath, NULL, NULL, NULL);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
// Set permissions for projects directory itself (not its contents)
|
// Set permissions for projects directory itself (not its contents)
|
||||||
// chmod u=rwx,g=rx,o= "/Library/Applications/BOINC Data/projects"
|
// chmod -R u=rwsx,g=rwsx,o=rx "/Library/Applications/BOINC Data/projects"
|
||||||
// 0750 = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP| S_IXGRP
|
// 0775 = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH
|
||||||
// set read, write, execute permission for user, read and execute for group, no access for others
|
// read, write and execute permission for user & group; read and execute permission for others
|
||||||
err = DoPrivilegedExec(chmodPath, "u=rwx,g=rx,o=", fullpath, NULL, NULL, NULL);
|
err = DoPrivilegedExec(chmodPath, "u=rwx,g=rwx,o=rx", fullpath, NULL, NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
} // projects directory
|
} // projects directory
|
||||||
|
@ -260,18 +269,25 @@ OSStatus SetBOINCDataOwnersGroupsAndPermissions() {
|
||||||
|
|
||||||
result = FSPathMakeRef((StringPtr)fullpath, &ref, &isDirectory);
|
result = FSPathMakeRef((StringPtr)fullpath, &ref, &isDirectory);
|
||||||
if ((result == noErr) && (isDirectory)) {
|
if ((result == noErr) && (isDirectory)) {
|
||||||
// Set owner and group of slots directory and all its contents
|
// Set owner and group of slots directory's contents
|
||||||
sprintf(buf1, "%s:%s", boinc_master_name, boinc_project_name);
|
sprintf(buf1, "%s:%s", boinc_master_name, boinc_project_name);
|
||||||
// chown boinc_master:boinc_project "/Library/Applications/BOINC Data/slots"
|
// chown boinc_master:boinc_project "/Library/Applications/BOINC Data/slots"
|
||||||
err = DoPrivilegedExec(chownPath, "-R", buf1, fullpath, NULL, NULL);
|
err = DoPrivilegedExec(chownPath, "-R", buf1, fullpath, NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
|
// Set owner and group of slots directory itself
|
||||||
|
sprintf(buf1, "%s:%s", boinc_master_name, boinc_master_name);
|
||||||
|
// chown boinc_master:boinc_master "/Library/Applications/BOINC Data/slots"
|
||||||
|
err = DoPrivilegedExec(chownPath, buf1, fullpath, NULL, NULL, NULL);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
// Set permissions for slots directory itself (not its contents)
|
// Set permissions for slots directory itself (not its contents)
|
||||||
// chmod u=rwx,g=rx,o= "/Library/Applications/BOINC Data/slots"
|
// chmod -R u=rwsx,g=rwsx,o=rx "/Library/Applications/BOINC Data/slots"
|
||||||
// 0750 = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP| S_IXGRP
|
// 0775 = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH
|
||||||
// set read, write, execute permission for user, read and execute for group, no access for others
|
// read, write and execute permission for user & group; read and execute permission for others
|
||||||
err = DoPrivilegedExec(chmodPath, "u=rwx,g=rx,o=", fullpath, NULL, NULL, NULL);
|
err = DoPrivilegedExec(chmodPath, "u=rwx,g=rwx,o=rx", fullpath, NULL, NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
} // slots directory
|
} // slots directory
|
||||||
|
@ -306,17 +322,17 @@ OSStatus SetBOINCDataOwnersGroupsAndPermissions() {
|
||||||
#if 0 // Redundant if we already set contents of BOINC Data directory to boinc_master:boinc_master 0660
|
#if 0 // Redundant if we already set contents of BOINC Data directory to boinc_master:boinc_master 0660
|
||||||
result = FSPathMakeRef((StringPtr)fullpath, &ref, &isDirectory);
|
result = FSPathMakeRef((StringPtr)fullpath, &ref, &isDirectory);
|
||||||
if ((result == noErr) && (isDirectory)) {
|
if ((result == noErr) && (isDirectory)) {
|
||||||
// Set owner and group of switcher directory and its contents
|
// Set owner and group of switcher directory
|
||||||
sprintf(buf1, "%s:%s", boinc_master_name, boinc_master_name);
|
sprintf(buf1, "%s:%s", boinc_master_name, boinc_master_name);
|
||||||
// chown boinc_master:boinc_master "/Library/Applications/BOINC Data/switcher"
|
// chown boinc_master:boinc_master "/Library/Applications/BOINC Data/switcher"
|
||||||
err = DoPrivilegedExec(chownPath, "-R", buf1, fullpath, NULL, NULL);
|
err = DoPrivilegedExec(chownPath, buf1, fullpath, NULL, NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
// chmod -R u+rw,g+rw,o= "/Library/Applications/BOINC Data/switcher"
|
// chmod u+rw,g+rw,o= "/Library/Applications/BOINC Data/switcher"
|
||||||
// 0660 = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP
|
// 0660 = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP
|
||||||
// set read and write permission for user and group, no access for others (leaves execute bits unchanged)
|
// set read and write permission for user and group, no access for others (leaves execute bits unchanged)
|
||||||
err = DoPrivilegedExec(chmodPath, "-R", "u+rw,g+rw,o=", fullpath, NULL, NULL);
|
err = DoPrivilegedExec(chmodPath, "u+rw,g+rw,o=", fullpath, NULL, NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
} // switcher directory
|
} // switcher directory
|
||||||
|
@ -325,11 +341,18 @@ OSStatus SetBOINCDataOwnersGroupsAndPermissions() {
|
||||||
strlcat(fullpath, "/switcher", MAXPATHLEN);
|
strlcat(fullpath, "/switcher", MAXPATHLEN);
|
||||||
result = FSPathMakeRef((StringPtr)fullpath, &ref, &isDirectory);
|
result = FSPathMakeRef((StringPtr)fullpath, &ref, &isDirectory);
|
||||||
if ((result == noErr) && (! isDirectory)) {
|
if ((result == noErr) && (! isDirectory)) {
|
||||||
|
// Set owner and group of switcher application
|
||||||
|
sprintf(buf1, "%s:%s", boinc_project_name, boinc_project_name);
|
||||||
|
// chown boinc_project:boinc_project "/Library/Applications/BOINC Data/switcher/switcher"
|
||||||
|
err = DoPrivilegedExec(chownPath, buf1, fullpath, NULL, NULL, NULL);
|
||||||
|
if (err)
|
||||||
|
return err;
|
||||||
|
|
||||||
// Set permissions of switcher application
|
// Set permissions of switcher application
|
||||||
// chmod -R u=rsx,g=rsx,o= "/Library/Applications/BOINC Data/switcher"
|
// chmod u=rsx,g=rsx,o= "/Library/Applications/BOINC Data/switcher/switcher"
|
||||||
// 06550 = S_ISUID | S_ISGID | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP
|
// 06550 = S_ISUID | S_ISGID | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP
|
||||||
// setuid-on-execution, setgid-on-execution plus read and execute permission for user and group, no access for others
|
// setuid-on-execution, setgid-on-execution plus read and execute permission for user and group, no access for others
|
||||||
err = DoPrivilegedExec(chmodPath, "-R", "u=rsx,g=rsx,o=", fullpath, NULL, NULL);
|
err = DoPrivilegedExec(chmodPath, "u=rsx,g=rsx,o=", fullpath, NULL, NULL, NULL);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
} // switcher application
|
} // switcher application
|
||||||
|
|
|
@ -26,3 +26,4 @@ OSStatus SetBOINCDataOwnersGroupsAndPermissions(void);
|
||||||
OSStatus AddAdminUserToGroups(char *user_name);
|
OSStatus AddAdminUserToGroups(char *user_name);
|
||||||
void ShowSecurityError(const char *format, ...);
|
void ShowSecurityError(const char *format, ...);
|
||||||
|
|
||||||
|
int CheckSecurity(int isManager);
|
||||||
|
|
|
@ -132,6 +132,7 @@ extern const char* boincerror(int which_error);
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
extern int lookup_group(char*, gid_t& gid);
|
extern int lookup_group(char*, gid_t& gid);
|
||||||
|
extern int check_security(int isManager);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -159,6 +159,8 @@
|
||||||
DD64DF0509DCC5E000668B3A /* gutil_text.C in Sources */ = {isa = PBXBuildFile; fileRef = DD64DF0409DCC5E000668B3A /* gutil_text.C */; };
|
DD64DF0509DCC5E000668B3A /* gutil_text.C in Sources */ = {isa = PBXBuildFile; fileRef = DD64DF0409DCC5E000668B3A /* gutil_text.C */; };
|
||||||
DD65020A09F599B9008E8A3A /* texfont.c in Sources */ = {isa = PBXBuildFile; fileRef = DD65020609F599B9008E8A3A /* texfont.c */; };
|
DD65020A09F599B9008E8A3A /* texfont.c in Sources */ = {isa = PBXBuildFile; fileRef = DD65020609F599B9008E8A3A /* texfont.c */; };
|
||||||
DD65020B09F599B9008E8A3A /* txf_util.C in Sources */ = {isa = PBXBuildFile; fileRef = DD65020809F599B9008E8A3A /* txf_util.C */; };
|
DD65020B09F599B9008E8A3A /* txf_util.C in Sources */ = {isa = PBXBuildFile; fileRef = DD65020809F599B9008E8A3A /* txf_util.C */; };
|
||||||
|
DD6617880A3FFD8C00FFEBEB /* check_security.C in Sources */ = {isa = PBXBuildFile; fileRef = DD6617870A3FFD8C00FFEBEB /* check_security.C */; };
|
||||||
|
DD6617890A3FFD8C00FFEBEB /* check_security.C in Sources */ = {isa = PBXBuildFile; fileRef = DD6617870A3FFD8C00FFEBEB /* check_security.C */; };
|
||||||
DD69FEF508416C6B00C01361 /* gui_rpc_client.C in Sources */ = {isa = PBXBuildFile; fileRef = DD81C5CC07C5D7D90098A04D /* gui_rpc_client.C */; };
|
DD69FEF508416C6B00C01361 /* gui_rpc_client.C in Sources */ = {isa = PBXBuildFile; fileRef = DD81C5CC07C5D7D90098A04D /* gui_rpc_client.C */; };
|
||||||
DD69FEF708416C9A00C01361 /* boinc_cmd.C in Sources */ = {isa = PBXBuildFile; fileRef = DD69FEF608416C9A00C01361 /* boinc_cmd.C */; };
|
DD69FEF708416C9A00C01361 /* boinc_cmd.C in Sources */ = {isa = PBXBuildFile; fileRef = DD69FEF608416C9A00C01361 /* boinc_cmd.C */; };
|
||||||
DD69FF0C084171CF00C01361 /* network.C in Sources */ = {isa = PBXBuildFile; fileRef = DD6D0A8507E9A61B007F882B /* network.C */; };
|
DD69FF0C084171CF00C01361 /* network.C in Sources */ = {isa = PBXBuildFile; fileRef = DD6D0A8507E9A61B007F882B /* network.C */; };
|
||||||
|
@ -884,6 +886,7 @@
|
||||||
DD65020709F599B9008E8A3A /* texfont.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = texfont.h; path = ../api/texfont.h; sourceTree = SOURCE_ROOT; };
|
DD65020709F599B9008E8A3A /* texfont.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = texfont.h; path = ../api/texfont.h; sourceTree = SOURCE_ROOT; };
|
||||||
DD65020809F599B9008E8A3A /* txf_util.C */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = txf_util.C; path = ../api/txf_util.C; sourceTree = SOURCE_ROOT; };
|
DD65020809F599B9008E8A3A /* txf_util.C */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = txf_util.C; path = ../api/txf_util.C; sourceTree = SOURCE_ROOT; };
|
||||||
DD65020909F599B9008E8A3A /* txf_util.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = txf_util.h; path = ../api/txf_util.h; sourceTree = SOURCE_ROOT; };
|
DD65020909F599B9008E8A3A /* txf_util.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = txf_util.h; path = ../api/txf_util.h; sourceTree = SOURCE_ROOT; };
|
||||||
|
DD6617870A3FFD8C00FFEBEB /* check_security.C */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = check_security.C; sourceTree = "<group>"; };
|
||||||
DD69FEE808416C1300C01361 /* boinc_cmd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = boinc_cmd; sourceTree = BUILT_PRODUCTS_DIR; };
|
DD69FEE808416C1300C01361 /* boinc_cmd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = boinc_cmd; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
DD69FEF608416C9A00C01361 /* boinc_cmd.C */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = boinc_cmd.C; path = ../lib/boinc_cmd.C; sourceTree = SOURCE_ROOT; };
|
DD69FEF608416C9A00C01361 /* boinc_cmd.C */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = boinc_cmd.C; path = ../lib/boinc_cmd.C; sourceTree = SOURCE_ROOT; };
|
||||||
DD6D0A8507E9A61B007F882B /* network.C */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = network.C; path = ../lib/network.C; sourceTree = SOURCE_ROOT; };
|
DD6D0A8507E9A61B007F882B /* network.C */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = network.C; path = ../lib/network.C; sourceTree = SOURCE_ROOT; };
|
||||||
|
@ -1456,6 +1459,7 @@
|
||||||
F519F98E02C44A7501BDB3CA /* scheduler_op.h */,
|
F519F98E02C44A7501BDB3CA /* scheduler_op.h */,
|
||||||
AA8B6B23046C366200A80164 /* ss_logic.C */,
|
AA8B6B23046C366200A80164 /* ss_logic.C */,
|
||||||
AA8B6B24046C366200A80164 /* ss_logic.h */,
|
AA8B6B24046C366200A80164 /* ss_logic.h */,
|
||||||
|
DD6617870A3FFD8C00FFEBEB /* check_security.C */,
|
||||||
F54B8FE402AC0A0C01FB7237 /* time_stats.C */,
|
F54B8FE402AC0A0C01FB7237 /* time_stats.C */,
|
||||||
F54B8FE502AC0A0C01FB7237 /* time_stats.h */,
|
F54B8FE502AC0A0C01FB7237 /* time_stats.h */,
|
||||||
DD5EF08807C5B7C7007CCE8D /* version.h */,
|
DD5EF08807C5B7C7007CCE8D /* version.h */,
|
||||||
|
@ -2474,6 +2478,7 @@
|
||||||
DD58C47408F334EA00C1DF66 /* WizardAttachProject.cpp in Sources */,
|
DD58C47408F334EA00C1DF66 /* WizardAttachProject.cpp in Sources */,
|
||||||
DD58C47608F334EA00C1DF66 /* wizardex.cpp in Sources */,
|
DD58C47608F334EA00C1DF66 /* wizardex.cpp in Sources */,
|
||||||
DD8DD4A709D9432F0043019E /* BOINCDialupManager.cpp in Sources */,
|
DD8DD4A709D9432F0043019E /* BOINCDialupManager.cpp in Sources */,
|
||||||
|
DD6617890A3FFD8C00FFEBEB /* check_security.C in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -2684,6 +2689,7 @@
|
||||||
DDD74DD207CF493C0065AC9D /* proxy_info.C in Sources */,
|
DDD74DD207CF493C0065AC9D /* proxy_info.C in Sources */,
|
||||||
DDD74DD307CF493D0065AC9D /* shmem.C in Sources */,
|
DDD74DD307CF493D0065AC9D /* shmem.C in Sources */,
|
||||||
DDD74DD407CF493E0065AC9D /* util.C in Sources */,
|
DDD74DD407CF493E0065AC9D /* util.C in Sources */,
|
||||||
|
DD6617880A3FFD8C00FFEBEB /* check_security.C in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue