version 1.16, 2025/04/04 19:43:18
|
version 1.18, 2025/04/09 19:52:02
|
Line 24
|
Line 24
|
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
* |
* |
* $Log$ |
* $Log$ |
|
* Revision 1.18 2025/04/09 19:52:02 snw |
|
* Eliminate as many warnings as possible while building with -Wall |
|
* |
|
* Revision 1.17 2025/04/04 21:28:16 snw |
|
* Remove custom_user and custom_group vars from freem and shed privileges per environment catalog settings |
|
* |
* Revision 1.16 2025/04/04 19:43:18 snw |
* Revision 1.16 2025/04/04 19:43:18 snw |
* Switch to using environment catalog to determine user and group for environment, and remove -u and -g flags from freem |
* Switch to using environment catalog to determine user and group for environment, and remove -u and -g flags from freem |
* |
* |
Line 141 int main (int argc, char **argv, char **
|
Line 147 int main (int argc, char **argv, char **
|
gid_t d_gid; |
gid_t d_gid; |
uid_t d_uid; |
uid_t d_uid; |
|
|
short custom_user = FALSE; |
|
short custom_group = FALSE; |
|
|
|
#if defined(HAVE_GETOPT_LONG) |
#if defined(HAVE_GETOPT_LONG) |
struct option long_options[] = { |
struct option long_options[] = { |
{"help", no_argument, 0, 'h'}, |
{"help", no_argument, 0, 'h'}, |
Line 172 int main (int argc, char **argv, char **
|
Line 175 int main (int argc, char **argv, char **
|
|
|
char *symname = (char *) calloc(STRLEN, sizeof(char)); |
char *symname = (char *) calloc(STRLEN, sizeof(char)); |
char *symval = (char *) calloc(STRLEN, sizeof(char)); |
char *symval = (char *) calloc(STRLEN, sizeof(char)); |
|
|
int namelen; |
|
int vallen; |
|
|
|
char cli_rtn_path[PATH_MAX] = {0}; |
char cli_rtn_path[PATH_MAX] = {0}; |
char *cli_rtn_file; |
char *cli_rtn_file; |
char cli_rtn_name[256]; |
char cli_rtn_name[256]; |
Line 508 int main (int argc, char **argv, char **
|
Line 508 int main (int argc, char **argv, char **
|
if (run_daemon == FALSE && group_member (d_gid) == 0) { |
if (run_daemon == FALSE && group_member (d_gid) == 0) { |
fprintf (stderr, "freem: you must be a member of the %s group to use environment %s\n", d_groupname, shm_env); |
fprintf (stderr, "freem: you must be a member of the %s group to use environment %s\n", d_groupname, shm_env); |
exit (1); |
exit (1); |
} |
} |
|
|
#endif |
#endif |
|
|
if (run_daemon == TRUE) { |
if (run_daemon == TRUE) { |
Line 574 int main (int argc, char **argv, char **
|
Line 573 int main (int argc, char **argv, char **
|
if (geteuid () == 0) { |
if (geteuid () == 0) { |
/* shed privileges */ |
/* shed privileges */ |
|
|
if (custom_group) { |
|
fprintf (stderr, "freem: switching to group %s\n", d_groupname); |
fprintf (stderr, "freem: switching to group %s\n", d_groupname); |
m_log (1, "switching groups"); |
m_log (1, "switching groups"); |
|
|
if (setgid (d_gid) == -1) { |
if (setgid (d_gid) == -1) { |
fprintf (stderr, "freem: failure switching GID\n"); |
fprintf (stderr, "freem: failure switching GID\n"); |
m_log (1, "failure switching GIDs"); |
m_log (1, "failure switching GIDs"); |
exit (1); |
exit (1); |
} |
|
} |
} |
|
|
|
|
|
|
if (custom_user) { |
if (d_uid != geteuid ()) { |
fprintf (stderr, "freem: switching to username %s\n", d_username); |
fprintf (stderr, "freem: switching to username %s\n", d_username); |
m_log (1, "switching users"); |
m_log (1, "switching users"); |
|
|
Line 864 int main (int argc, char **argv, char **
|
Line 863 int main (int argc, char **argv, char **
|
|
|
|
|
#if !defined(_AIX) |
#if !defined(_AIX) |
if(import_env == TRUE) { |
if (import_env == TRUE) { |
|
|
int i_maxlen = 255; |
int i_maxlen = 255; |
|
|
for(env = envp; *env != 0; env++) { |
for (env = envp; *env != 0; env++) { |
|
varname = strtok (*env, "="); |
namelen = 0; |
varval = strtok (NULL, "="); |
vallen = 0; |
|
|
|
varname = strtok(*env, "="); |
|
varval = strtok(NULL, "="); |
|
|
|
if(varval != NULL) { |
|
namelen = strlen (varname); |
|
vallen = strlen (varval); |
|
|
|
|
if (varval != NULL) { |
snprintf (symname, i_maxlen, "ENV.%s\201\201", varname); |
snprintf (symname, i_maxlen, "ENV.%s\201\201", varname); |
strncpy (symval, varval, i_maxlen); |
strncpy (symval, varval, i_maxlen); |
|
|