Skip to content
Snippets Groups Projects
Select Git revision
  • 8f3abcc835f5fcf2828e910340a55b90f2aa2316
  • master default protected
  • fix_Makefile.mingw#2
  • update_Makefile.mingw
  • fix_Makefile.mingw
  • fix_API_for_C_apps
  • fix_procinfo_mac
  • boinccmd_gpu_mode_always_until_sigterm
  • fgrp_osx_hotfix
  • fix_boinc_master@f8250782
  • eah_wrapper_improvements
  • diagnostics_win-hotfix
  • diagnostics_win-hotfix-old
  • current_fgrp_apps
  • testing_gw_apps
  • gw_app_darwin_15
  • current_brp_apps
  • current_brp_apps_android10
  • current_gfx_apps
  • current_server
  • current_gw_apps
  • previous_fgrp_apps
  • previous_gw_apps
  • testing_brp_apps
  • apps_FGRP3_1.07
  • apps_FGRP3_1.08
26 results

setprojectgrp.cpp

Blame
  • user avatar
    Eric J. Korpela authored
        - Added checks for net/*.h, arpa/*.h, netinet/*.h and code to figure out
          which of those files to include
        - Modified MAC address check to work on some non-Linux unixes.
          (mac_address.cpp)
        - Added suggested change to "already attached to project" checking.
          (ProjectInfoPage.cpp)
        - changed includes of standard c header files to their c++ equivalents
          (i.e. replaced <stdio.h> with <cstdio>) for namespace protection.
        - replaced "using namespace std;" with more explicit "using std::function" in
          several files.
        - Fixed bug in checking whether the os is OS/2 and added conditional OS_OS2
          to the build environment. (boinc_platform.m4,configure.ac)
        - Changed build environment to not use -nostandardlibs unless we are using
          G++ and static linkage is specified. (configure.ac)
        - Added makefiles and package building files for solaris CSW package manager.
        - Fixed bug with attempting to find login name using logname. (configure.ac)
        - Added ifdef HAVE_* protection around some include files commonly found in
          sys.
        - Added support for unified binary for x86_64/i686-pc-solaris.
          (cs_platforms.cpp)
        - generate_host_cpid() now uses MAC address on non-linux unix.
          (hostinfo_network.cpp)
        - Macro BOINC_SET_COMPILE_FLAGS now doesn't check gcc only flags on non-gcc
          compilers. (boinc_set_compile_flags.m4)
        - Library compiles no longer depend upon the library extension or require
          the library to be prefixed with lib.
        - More fixes for fcgi builds.
        - Added declaration of "struct ether_addr" and ether_ntoa().  Have not yet
          implemented ether_ntoa() for machines that don't have it, or where it is
          buggy.  (unix_util.h)
        - Added FCGI::perror() which calls FCGI_perror(). (boinc_fcgi.{h,cpp})
        - Fixed library Makefiles so that all required headers get installed.
    
    
    svn path=/trunk/boinc/; revision=17388
    8f3abcc8
    History
    setprojectgrp.cpp 2.05 KiB
    // This file is part of BOINC.
    // http://boinc.berkeley.edu
    // Copyright (C) 2008 University of California
    //
    // BOINC 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 3 of the License, or (at your option) any later version.
    //
    // BOINC 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.
    //
    // You should have received a copy of the GNU Lesser General Public License
    // along with BOINC.  If not, see <http://www.gnu.org/licenses/>.
    
    // setprojectgrp.C
    //
    // When run as
    // setprojectgrp Path
    // sets group of file at Path to boinc_project
    //
    // setprojectgrp runs setuid boinc_master and setgid boinc_project
    
    #include <unistd.h>
    #include <grp.h>
    #include <cstdio>
    #include <cerrno>
    #ifdef HAVE_SYS_STAT_H
    #include <sys/stat.h>
    #endif
    
    int main(int argc, char** argv) {
        gid_t       project_gid;
        int         retval = 0;
        struct stat sbuf;
        
        project_gid = getegid();
    
    #if 0           // For debugging
        fprintf(stderr, "setprojectgrp argc=%d, arg[1]= %s, boinc_project gid = %d\n", argc, argv[1], project_gid);
        fflush(stderr);
    #endif
    
        // chown() doesn't change ownershp of symbolic links; it follows the link and 
        // changes the file is not available in OS 10.3.9.
        //
        // But we don't really need to worry about this, because the system ignores 
        // ownership & permissions of symbolic links anyway.
        //
        // Also, the target of a symbolic link may not be present if the slot containing 
        // the link is no longer in use.
        //
        if (lstat(argv[1], &sbuf) == 0) {
            if (!S_ISLNK(sbuf.st_mode)) {
                retval = chown(argv[1], (uid_t)-1, project_gid);
                if (retval)
                    fprintf(stderr, "chown(%s, -1, %d) failed: errno=%d\n", argv[1], project_gid, errno);
            }
        }
        return retval;
    }