--- freem/src/ssvn_job.c 2025/02/28 20:51:20 1.2 +++ freem/src/ssvn_job.c 2025/04/13 04:22:43 1.9 @@ -1,23 +1,11 @@ /* - * * - * * * - * * * - * *************** - * * * * * - * * MUMPS * - * * * * * - * *************** - * * * - * * * - * * - * - * ssvn_job.c - * ^$JOB ssv + * $Id: ssvn_job.c,v 1.9 2025/04/13 04:22:43 snw Exp $ + * ^$JOB ssvn * * - * Author: Serena Willis + * Author: Serena Willis * Copyright (C) 1998 MUG Deutschland - * Copyright (C) 2020 Coherent Logic Development LLC + * Copyright (C) 2020, 2025 Coherent Logic Development LLC * * * This file is part of FreeM. @@ -35,6 +23,28 @@ * You should have received a copy of the GNU Affero Public License * along with FreeM. If not, see . * + * $Log: ssvn_job.c,v $ + * Revision 1.9 2025/04/13 04:22:43 snw + * Fix snprintf calls + * + * Revision 1.8 2025/04/11 23:27:04 snw + * Fix overflow bugs in ssvn_job.c + * + * Revision 1.7 2025/04/10 17:21:54 snw + * Remove traces of BDB global handler + * + * Revision 1.6 2025/04/09 19:52:02 snw + * Eliminate as many warnings as possible while building with -Wall + * + * Revision 1.5 2025/03/24 04:13:11 snw + * Replace action macro dat with fra_dat to avoid symbol conflict on OS/2 + * + * Revision 1.4 2025/03/09 19:50:47 snw + * Second phase of REUSE compliance and header reformat + * + * + * SPDX-FileCopyrightText: (C) 2025 Coherent Logic Development LLC + * SPDX-License-Identifier: AGPL-3.0-or-later **/ #include @@ -70,8 +80,8 @@ void ssvn_job_add_device(int channel, ch d_buf = (char *) malloc (STRLEN * sizeof (char)); NULLPTRCHK(k_buf,"ssvn_job_add_device"); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel); - snprintf (d_buf, 512 - 1, "%s\201", device); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel); + snprintf (d_buf, STRLEN - 1, "%s\201", device); symtab_shm (set_sym, k_buf, d_buf); @@ -92,8 +102,8 @@ void ssvn_job_remove_device(int channel) d_buf = (char *) malloc (STRLEN * sizeof (char)); NULLPTRCHK(k_buf,"ssvn_job_add_device"); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel); - snprintf (d_buf, 512 - 1, "\201"); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel); + snprintf (d_buf, STRLEN - 1, "\201"); symtab_shm (kill_sym, k_buf, d_buf); @@ -107,11 +117,11 @@ void ssvn_job_remove_device(int channel) void ssvn_job_update(void) { - char k_buf[512]; - char d_buf[512]; + char k_buf[STRLEN]; + char d_buf[STRLEN]; - char tk_buf[512]; - char td_buf[512]; + char tk_buf[STRLEN]; + char td_buf[STRLEN]; #ifndef AMIGA68K uid_t uid; @@ -134,235 +144,221 @@ void ssvn_job_update(void) ierr_sav = ierr; - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202PIPE_GLVN\201", pid); - snprintf (d_buf, 5, "%%\201"); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PIPE_GLVN\201", pid); + snprintf (d_buf, STRLEN - 1, "%%\201"); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZCOMMANDS\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMANDS\201", pid); stcpy (d_buf, zcommds); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZFUNCTIONS\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZFUNCTIONS\201", pid); stcpy (d_buf, zfunctions); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZSVS\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZSVS\201", pid); stcpy (d_buf, zsvn); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202BREAK_HANDLER\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202BREAK_HANDLER\201", pid); stcpy (d_buf, brkaction); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE_BUFFER_SIZE\201", pid); - snprintf (d_buf, 512 - 1, "%ld\201", PSIZE0 - 1); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_SIZE\201", pid); + snprintf (d_buf, STRLEN - 1, "%ld\201", PSIZE0 - 1); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE_BUFFER_COUNT\201", pid); - snprintf (d_buf, 512 - 1, "%ld\201", NO_OF_RBUF); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_COUNT\201", pid); + snprintf (d_buf, STRLEN - 1, "%ld\201", NO_OF_RBUF); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE_BUFFER_AUTO_ADJUST\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", autorsize); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_AUTO_ADJUST\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", autorsize); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SYMBOL_TABLE_SIZE\201", pid); - snprintf (d_buf, 512 - 1, "%ld\201", PSIZE); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SYMBOL_TABLE_SIZE\201", pid); + snprintf (d_buf, STRLEN - 1, "%ld\201", PSIZE); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SYMBOL_TABLE_AUTO_ADJUST\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", autopsize); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SYMBOL_TABLE_AUTO_ADJUST\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", autopsize); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_SIZE\201", pid); - snprintf (d_buf, 512 - 1, "%ld\201", UDFSVSIZ); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_SIZE\201", pid); + snprintf (d_buf, STRLEN - 1, "%ld\201", UDFSVSIZ); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_AUTO_ADJUST\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", autousize); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_AUTO_ADJUST\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", autousize); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_UNIQUE_CHARS\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", (glvnflag.one[0] == 0) ? 255 : glvnflag.one[0]); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_UNIQUE_CHARS\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", (glvnflag.one[0] == 0) ? 255 : glvnflag.one[0]); symtab_shm (set_sym, k_buf, d_buf); tf = UNSIGN (glvnflag.one[1]); toggle (tf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_CASE_SENSITIVE\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", tf); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_CASE_SENSITIVE\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", tf); symtab_shm (set_sym, k_buf, d_buf); tf = UNSIGN (glvnflag.one[2]); if (tf == 0) tf = 255; - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_NAME_SUB_LENGTH\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", tf); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_NAME_SUB_LENGTH\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", tf); symtab_shm (set_sym, k_buf, d_buf); tf = UNSIGN (glvnflag.one[3]); if (tf == 0) tf = 255; - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_SUB_LENGTH\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", tf); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_SUB_LENGTH\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", tf); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SINGLE_USER\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", lonelyflag); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SINGLE_USER\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", lonelyflag); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202LOWERCASE_EVERYWHERE\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", lowerflag); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LOWERCASE_EVERYWHERE\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", lowerflag); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZCOMMAND_ARGUMENT_NAME\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMAND_ARGUMENT_NAME\201", pid); stcpy (d_buf, zargdefname); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202TIMEZONE_OFFSET\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202TIMEZONE_OFFSET\201", pid); lintstr (d_buf, tzoffset); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202%s\201", pid, nsname); - snprintf (d_buf, 512 - 1, "%s\201", gbl_u_engine); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202%s\201", pid, nsname); + snprintf (d_buf, STRLEN - 1, "%s\201", gbl_u_engine); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202SYSTEM\201", pid); - snprintf (d_buf, 512 - 1, "%s\201", gbl_s_engine); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202SYSTEM\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", gbl_s_engine); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENGINES\202LOCAL\201", pid); - snprintf (d_buf, 512 - 1, "%s\201", loc_engine); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202LOCAL\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", loc_engine); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202CHARACTER\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202CHARACTER\201", pid); symtab_shm (set_sym, k_buf, "M\201"); - snprintf (d_buf, 512 - 1, "%s\201", curdir); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202CWD\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", curdir); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202CWD\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GLOBAL\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GLOBAL\201", pid); symtab_shm (set_sym, k_buf, " \201"); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202LOCK\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LOCK\201", pid); symtab_shm (set_sym, k_buf, " \201"); - snprintf (d_buf, 512 - 1, "%s\201", oucpath); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202IOPATH\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", oucpath); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202IOPATH\201", pid); symtab_shm (set_sym, k_buf, d_buf); #if !defined(MSDOS) - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202PRIORITY\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", getpriority (PRIO_PROCESS, pid)); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PRIORITY\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", getpriority (PRIO_PROCESS, pid)); symtab_shm (set_sym, k_buf, d_buf); #endif - snprintf (d_buf, 512 - 1, "%s\201", rou_name); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", rou_name); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "0:\"%s\"\201", dev[HOME]); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202$PRINCIPAL\201", pid); + snprintf (d_buf, STRLEN - 1, "0:\"%s\"\201", dev[HOME]); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$PRINCIPAL\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", tp_level); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202$TLEVEL\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", tp_level); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$TLEVEL\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "0:\"%s\"\201", dev[HOME]); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202$IO\201", pid); + snprintf (d_buf, STRLEN - 1, "0:\"%s\"\201", dev[HOME]); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$IO\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 -1, "%s\201", gvndefault); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVNDEFAULT\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", gvndefault); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVNDEFAULT\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 -1, "%s\201", lvndefault); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202LVNDEFAULT\201", pid); + snprintf (d_buf, STRLEN -1, "%s\201", lvndefault); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LVNDEFAULT\201", pid); symtab_shm (set_sym, k_buf, d_buf); ssvn_job_add_device (HOME, dev[HOME]); - snprintf (d_buf, 512 - 1, "%d\201", uid); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202USER\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", uid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", gid); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GROUP\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", gid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GROUP\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%s\201", nsname); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202NAMESPACE\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", nsname); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202NAMESPACE\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", cur_symtab); - snprintf (k_buf, 512 - 1, "^$JOB\202\%d\202SYMTAB\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", cur_symtab); + snprintf (k_buf, STRLEN - 1, "^$JOB\202\%d\202SYMTAB\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", pid); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202PID\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PID\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", frm_throw_all_errors); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SET_ALL_ECODES\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", frm_throw_all_errors); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SET_ALL_ECODES\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (tk_buf, 512 - 1, "^$SYSTEM\202ZDATE_FORMAT\201"); + snprintf (tk_buf, STRLEN - 1, "^$SYSTEM\202ZDATE_FORMAT\201"); ssvn (get_sym, tk_buf, td_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZDATE_FORMAT\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZDATE_FORMAT\201", pid); symtab_shm (set_sym, k_buf, td_buf); - snprintf (tk_buf, 512 - 1, "^$SYSTEM\202ZTIME_FORMAT\201"); + snprintf (tk_buf, STRLEN - 1, "^$SYSTEM\202ZTIME_FORMAT\201"); ssvn (get_sym, tk_buf, td_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZTIME_FORMAT\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZTIME_FORMAT\201", pid); symtab_shm (set_sym, k_buf, td_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENVIRONMENT\201", pid); - snprintf (d_buf, 512 - 1, "%s\201", shm_env); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENVIRONMENT\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", shm_env); symtab_shm (set_sym, k_buf, d_buf); switch (fp_mode) { case 0: - snprintf (d_buf, 512 - 1, "FIXED\201"); + snprintf (d_buf, STRLEN - 1, "FIXED\201"); break; default: - snprintf (d_buf, 512 - 1, "IEEE754\201"); - snprintf (fp_conversion, 9, "%%.%df\201", DBL_DIG); + snprintf (d_buf, STRLEN - 1, "IEEE754\201"); + snprintf (fp_conversion, sizeof (fp_conversion) - 1, "%%.%df\201", DBL_DIG); zprecise = DBL_DIG; break; } - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202MATH\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202MATH\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", en_revstrf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202REVSTR\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", en_revstrf); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202REVSTR\201", pid); symtab_shm (set_sym, k_buf, d_buf); stcpy (d_buf, rou_name); stcnv_m2c (d_buf); -#if !defined(__FreeBSD__) - - if (run_daemon == FALSE) { - sprintf (k_buf, " freem: namespace %s routine %s", nsname, d_buf); - } - else { - sprintf (k_buf, " freem: %s environment daemon", shm_env); - } - if (!libflag) { - strcpy (m_argv[0], k_buf); - } - -#endif - merr_raise (ierr_sav); } @@ -370,7 +366,6 @@ void ssvn_job_update(void) void ssvn_job(short action, char *key, char *data) { - int errsav; pid_t t_pid; int i; char ch; @@ -504,7 +499,7 @@ void ssvn_job(short action, char *key, c int tf = tvexpr (data); lowerflag = tf; - snprintf (data, 512 - 1, "%d\n", tf); + snprintf (data, STRLEN - 1, "%d\n", tf); symtab_shm (action, key, data); @@ -561,7 +556,7 @@ void ssvn_job(short action, char *key, c else if (strcmp (mref_get_subscript (r, 1), "ROUTINE_BUFFER_AUTO_ADJUST") == 0) { autorsize = tvexpr (data); - snprintf (data, 512 - 1, "%d\201", tvexpr (data)); + snprintf (data, STRLEN - 1, "%d\201", tvexpr (data)); symtab_shm (action, key, data); @@ -587,7 +582,7 @@ void ssvn_job(short action, char *key, c else if (strcmp (mref_get_subscript (r, 1), "SYMBOL_TABLE_AUTO_ADJUST") == 0) { autopsize = tvexpr (data); - snprintf (data, 512 - 1, "%d\201", tvexpr (data)); + snprintf (data, STRLEN - 1, "%d\201", tvexpr (data)); symtab_shm (action, key, data); @@ -612,7 +607,7 @@ void ssvn_job(short action, char *key, c } else if (strcmp (mref_get_subscript (r, 1), "USER_DEFINED_ISV_TABLE_AUTO_ADJUST") == 0) { autousize = tvexpr (data); - snprintf (data, 512 - 1, "%d\201", tvexpr (data)); + snprintf (data, STRLEN - 1, "%d\201", tvexpr (data)); symtab_shm (action, key, data); @@ -629,7 +624,7 @@ void ssvn_job(short action, char *key, c glvnflag.one[0] = (char) t; - snprintf (data, 512 - 1, "%d\201", t); + snprintf (data, STRLEN - 1, "%d\201", t); symtab_shm (action, key, data); merr_clear (); @@ -650,7 +645,7 @@ void ssvn_job(short action, char *key, c glvnflag.one[1] = t; - snprintf (data, 512 - 1, "%d\201", t); + snprintf (data, STRLEN - 1, "%d\201", t); symtab_shm (action, key, data); merr_clear (); @@ -671,7 +666,7 @@ void ssvn_job(short action, char *key, c if (merr () != MXNUM) { glvnflag.one[2] = (char) t; - snprintf (data, 512 - 1, "%d\201", t); + snprintf (data, STRLEN - 1, "%d\201", t); symtab_shm (action, key, data); merr_clear (); @@ -691,7 +686,7 @@ void ssvn_job(short action, char *key, c if (merr () != MXNUM) { glvnflag.one[3] = (char) t; - snprintf (data, 512 - 1, "%d\201", t); + snprintf (data, STRLEN - 1, "%d\201", t); symtab_shm (action, key, data); merr_clear (); @@ -707,7 +702,7 @@ void ssvn_job(short action, char *key, c int tf = tvexpr (data); close_all_globals (); - snprintf (data, 512 - 1, "%d\201", tf); + snprintf (data, STRLEN - 1, "%d\201", tf); symtab_shm (action, key, data); merr_clear (); @@ -730,41 +725,11 @@ void ssvn_job(short action, char *key, c tzoffset = tzo; - snprintf (data, 512 - 1, "%ld\201", tzoffset); + snprintf (data, STRLEN - 1, "%ld\201", tzoffset); symtab_shm (action, key, data); goto done; } - else if (strcmp (mref_get_subscript (r, 1), "ENGINES") == 0) { - - if (strcmp (mref_get_subscript (r, 2), "GLOBAL") == 0) { - - if ((strcmp (mref_get_subscript (r, 3), nsname) == 0) && (strcmp (mref_get_subscript (r, 3), "SYSTEM") != 0)) { - stcpy (tbuf, data); - stcnv_m2c (tbuf); - - global_set_engine ('u', tbuf); - - goto done; - - } - else if (strcmp (mref_get_subscript (r, 3), "SYSTEM") == 0) { - - stcpy (tbuf, data); - stcnv_m2c (tbuf); - - global_set_engine ('s', tbuf); - - goto done; - - } - - } - - merr_raise (M29); - goto done; - - } else if (strcmp (mref_get_subscript (r, 1), "USER_ERRORS") == 0) { symtab_shm (set_sym, key, data); @@ -942,7 +907,7 @@ void ssvn_job(short action, char *key, c fp_mode = 1; symtab_shm (set_sym, kbuf, data); - snprintf (fp_conversion, 9, "%%.%df\201", DBL_DIG); + snprintf (fp_conversion, sizeof (fp_conversion) - 1, "%%.%df\201", DBL_DIG); zprecise = DBL_DIG; merr_clear (); @@ -981,7 +946,7 @@ void ssvn_job(short action, char *key, c stcpy (data, g_o_val); goto done; } - case dat: + case fra_dat: case fra_order: case fra_query: if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {