NSIS-ka
A free C++ implementation of NSIS protocols

Changeset 6758


Ignore:
Timestamp:
Mar 4, 2014, 2:49:52 PM (4 years ago)
Author:
bless@…
Message:
  • setuid error handling/diagnostics improved
File:
1 edited

Legend:

Unmodified
Added
Removed
  • protlib/branches/2013-01-18-RELOAD-goltsman/src/setuid.cpp

    r2549 r6758  
    5656void setuid::init() {
    5757        if (is_init) {
    58           Log(ERROR_LOG,LOG_CRIT, "setuid", "Tried to initialize setuid although already initialized.");
     58          ERRCLog("setuid", "Tried to initialize setuid although already initialized.");
    5959        } else {
    6060                pthread_mutex_init(&mutex,NULL);
     
    8383                // turn off setuid
    8484                if (is_setuid) {
    85                   Log(INFO_LOG,LOG_CRIT, "setuid", "setuid::end() turn off setuid. Switching (maybe permamently) to " << real_userid << " " << real_username << " using setuid()");
    86                   ::setuid(real_userid);
     85                  ILog("setuid", "setuid::end() turn off setuid. Switching (maybe permamently) to " << real_userid << " " << real_username << " using setuid()");
     86                  if (::setuid(real_userid) < 0)
     87                  { // setuid failed, display error message
     88                          const uint8 error_msg_len= 255;
     89                          char error_msg[error_msg_len];
     90                          error_msg[0]='\0';
     91                          uint8 last_errno= errno;
     92                          if (strerror_r(last_errno, error_msg, error_msg_len-1)==0)
     93                                  ERRCLog("setuid", "setuid call failed:" << error_msg);
     94                          else
     95                                  ERRCLog("setuid", "setuid call failed: errno:" << errno << " " << error_msg);
     96                  }
     97
    8798                } // end if is_setuid
    8899        } else {
    89           Log(ERROR_LOG,LOG_CRIT, "setuid", "Tried to end setuid although not initialized.");
     100          ERRCLog("setuid", "Tried to end setuid although not initialized.");
    90101        } // end if is_init
    91102} // end end
     
    96107                        pthread_mutex_lock(&mutex); // install_cleanup_mutex_lock(&mutex);
    97108                        if (count==0) {
    98                           Log(INFO_LOG,LOG_CRIT, "setuid", "setuid::on(): setting euid to " << file_userid << " " << file_username);
     109                          ILog("setuid", "setuid::on(): setting euid to " << file_userid << " " << file_username);
    99110                          int status;
    100111                          #ifdef _POSIX_SAVED_IDS
     
    107118                                } else count++;
    108119                        } else {
    109                           Log(INFO_LOG,LOG_CRIT, "setuid", "setuid::on(): setuid already on");
     120                          ILog("setuid", "setuid::on(): setuid already on");
    110121                          count++;
    111122                        } // end if count
    112123                        pthread_mutex_unlock(&mutex); // uninstall_cleanup(1);
    113124                } else {
    114                   Log(ERROR_LOG,LOG_CRIT, "setuid", "Tried to use setuid although not initialized.");
     125                  ERRCLog("setuid", "Tried to use setuid although not initialized.");
    115126                } // end if is_init
    116127        } // end if is_setuid
Note: See TracChangeset for help on using the changeset viewer.