--- freem/src/mumps.c 2025/04/04 19:43:18 1.16 +++ freem/src/mumps.c 2025/04/10 01:24:38 1.19 @@ -1,5 +1,5 @@ /* - * $Id: mumps.c,v 1.16 2025/04/04 19:43:18 snw Exp $ + * $Id: mumps.c,v 1.19 2025/04/10 01:24:38 snw Exp $ * main module of freem * * @@ -24,6 +24,15 @@ * along with FreeM. If not, see . * * $Log: mumps.c,v $ + * Revision 1.19 2025/04/10 01:24:38 snw + * Remove C++ style comments + * + * 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 * Switch to using environment catalog to determine user and group for environment, and remove -u and -g flags from freem * @@ -141,9 +150,6 @@ int main (int argc, char **argv, char ** gid_t d_gid; uid_t d_uid; - short custom_user = FALSE; - short custom_group = FALSE; - #if defined(HAVE_GETOPT_LONG) struct option long_options[] = { {"help", no_argument, 0, 'h'}, @@ -172,10 +178,7 @@ int main (int argc, char **argv, char ** char *symname = (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_file; char cli_rtn_name[256]; @@ -234,7 +237,7 @@ int main (int argc, char **argv, char ** break; case 'e': /* specify FreeM environment */ - strncpy (shm_env, optarg, 255); + strncpy (shm_env, optarg, sizeof (shm_env) - 1); break; case 'R': @@ -359,7 +362,7 @@ int main (int argc, char **argv, char ** break; case 'e': /* specify FreeM environment */ - strncpy (shm_env, optarg, 255); + strncpy (shm_env, optarg, sizeof (shm_env) - 1); break; case 'R': @@ -508,8 +511,7 @@ int main (int argc, char **argv, char ** 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); exit (1); - } - + } #endif if (run_daemon == TRUE) { @@ -574,19 +576,19 @@ int main (int argc, char **argv, char ** if (geteuid () == 0) { /* shed privileges */ - if (custom_group) { - fprintf (stderr, "freem: switching to group %s\n", d_groupname); - m_log (1, "switching groups"); - - if (setgid (d_gid) == -1) { - fprintf (stderr, "freem: failure switching GID\n"); - m_log (1, "failure switching GIDs"); - exit (1); - } + + fprintf (stderr, "freem: switching to group %s\n", d_groupname); + m_log (1, "switching groups"); + + if (setgid (d_gid) == -1) { + fprintf (stderr, "freem: failure switching GID\n"); + m_log (1, "failure switching GIDs"); + exit (1); } + - if (custom_user) { + if (d_uid != geteuid ()) { fprintf (stderr, "freem: switching to username %s\n", d_username); m_log (1, "switching users"); @@ -668,7 +670,7 @@ int main (int argc, char **argv, char ** skip_init = 1; /* initialize FreeM environment */ - strncpy (nsnbuf, nsname, 255); + strncpy (nsnbuf, nsname, sizeof (nsnbuf)); if (init (nsnbuf) == FALSE) { if (fm_initialized) set_io (UNIX); @@ -755,7 +757,7 @@ int main (int argc, char **argv, char ** if (!skip_init) { /* initialize FreeM environment */ - strncpy (nsnbuf, nsname, 255); + strncpy (nsnbuf, nsname, sizeof (nsnbuf)); if (init (nsnbuf) == FALSE) { set_io (UNIX); fprintf (stderr, "\nError initializing FreeM.\n"); @@ -864,24 +866,16 @@ int main (int argc, char **argv, char ** #if !defined(_AIX) - if(import_env == TRUE) { - + if (import_env == TRUE) { int i_maxlen = 255; - for(env = envp; *env != 0; env++) { - - namelen = 0; - vallen = 0; - - varname = strtok(*env, "="); - varval = strtok(NULL, "="); - - if(varval != NULL) { - namelen = strlen (varname); - vallen = strlen (varval); + for (env = envp; *env != 0; env++) { + varname = strtok (*env, "="); + varval = strtok (NULL, "="); + if (varval != NULL) { snprintf (symname, i_maxlen, "ENV.%s\201\201", varname); - strncpy (symval, varval, i_maxlen); + strncpy (symval, varval, i_maxlen - 1); stcnv_c2m (symval);