--- freem/src/mumps.c 2025/04/04 21:28:16 1.17 +++ freem/src/mumps.c 2025/04/13 04:22:43 1.20 @@ -1,5 +1,5 @@ /* - * $Id: mumps.c,v 1.17 2025/04/04 21:28:16 snw Exp $ + * $Id: mumps.c,v 1.20 2025/04/13 04:22:43 snw Exp $ * main module of freem * * @@ -24,6 +24,15 @@ * along with FreeM. If not, see . * * $Log: mumps.c,v $ + * Revision 1.20 2025/04/13 04:22:43 snw + * Fix snprintf calls + * + * 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 * @@ -172,10 +181,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 +240,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 +365,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': @@ -456,8 +462,8 @@ int main (int argc, char **argv, char ** } #endif - snprintf (config_file, 4096, "%s/freem/%s/freem.conf", SYSCONFDIR, shm_env); - snprintf (env_config_file, 4096, "%s/freem/env.conf", SYSCONFDIR); + snprintf (config_file, sizeof (config_file) - 1, "%s/freem/%s/freem.conf", SYSCONFDIR, shm_env); + snprintf (env_config_file, sizeof (config_file) - 1, "%s/freem/env.conf", SYSCONFDIR); if (!file_exists (env_config_file)) { fprintf (stderr, "freem: environment catalog does not exist; may need to run fmadm configure\n"); @@ -667,7 +673,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); @@ -722,20 +728,20 @@ int main (int argc, char **argv, char ** } /* make this the startup routine */ - snprintf (startuprou, 256, "^%s\201", cli_rtn_name); + snprintf (startuprou, sizeof (startuprou) - 1, "^%s\201", cli_rtn_name); /* re-work the namespace config to search for the routine in the discovered path */ if (cli_rtn_name[0] == '%') { - snprintf (rou0plib, 256, "%s\201", cli_rtn_path); - snprintf (rou1plib, 256, "%s\201", cli_rtn_path); + snprintf (rou0plib, sizeof (rou0plib) - 1, "%s\201", cli_rtn_path); + snprintf (rou1plib, sizeof (rou1plib) - 1, "%s\201", cli_rtn_path); } else { - snprintf (rou0path, 256, "%s\201", cli_rtn_path); - snprintf (rou1path, 256, "%s\201", cli_rtn_path); + snprintf (rou0path, sizeof (rou0path) - 1, "%s\201", cli_rtn_path); + snprintf (rou1path, sizeof (rou1path) - 1, "%s\201", cli_rtn_path); } @@ -754,7 +760,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"); @@ -863,24 +869,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); @@ -899,10 +897,10 @@ int main (int argc, char **argv, char ** stcpy (verstr, FREEM_VERSION_STR); stcnv_m2c (verstr); - snprintf (version, 255, "\r\nCoherent Logic Development FreeM version %s [DIALECT: %s%s]\r\n\201", verstr, m_dialect, (restricted_mode == TRUE ? "/RESTRICTED" : "")); + snprintf (version, sizeof (version) - 1, "\r\nCoherent Logic Development FreeM version %s [DIALECT: %s%s]\r\n\201", verstr, m_dialect, (restricted_mode == TRUE ? "/RESTRICTED" : "")); write_m (version); - snprintf (version, 255, "Copyright (C) 2014, 2020, 2021, 2023, 2025 Coherent Logic Development LLC\r\n\r\n\201"); + snprintf (version, sizeof (version) - 1, "Copyright (C) 2014, 2020, 2021, 2023, 2025 Coherent Logic Development LLC\r\n\r\n\201"); write_m (version); /* @@ -919,7 +917,7 @@ int main (int argc, char **argv, char ** if (dx_mode) { char k_buf[512]; - snprintf (k_buf, 512 - 1, "%%TMPINITMCODE\201\201"); + snprintf (k_buf, sizeof (k_buf) - 1, "%%TMPINITMCODE\201\201"); symtab (set_sym, k_buf, dx_mcode); const_define (k_buf, dx_mcode); } @@ -927,7 +925,7 @@ int main (int argc, char **argv, char ** if (routine_mode) { char k_buf[512]; - snprintf (k_buf, 512 - 1, "%%TMPINITROUTINE\201\201"); + snprintf (k_buf, sizeof (k_buf) - 1, "%%TMPINITROUTINE\201\201"); symtab (set_sym, k_buf, startup_routine); const_define (k_buf, startup_routine); }