ref: 420d2f73094600290eaee2b0d9930c986ca4d04f
parent: d8cdc6cdff93dd09fe6c138b41877aef3edcb86c
parent: b76eb3af0f23c8904186f12f4d2669ec44ffb408
author: Jonne Kokkonen <jonne.kokkonen@gmail.com>
date: Thu Jun 2 18:58:07 EDT 2022
Merge pull request #74 from ferrix/snprintf Replace sprintf with snprintf
--- a/README.md
+++ b/README.md
@@ -42,7 +42,7 @@
This assumes you have [installed brew](https://docs.brew.sh/Installation)
```
-brew update && brew install -y git gcc make sdl2 libserialport pkg-config
+brew update && brew install git gcc make sdl2 libserialport pkg-config
```
### Download source code (All)
--- a/config.c
+++ b/config.c
@@ -67,61 +67,83 @@
// Open the default config file for writing
char config_path[1024] = {0};- sprintf(config_path, "%s%s", SDL_GetPrefPath("", "m8c"), conf->filename);+ snprintf(config_path, sizeof(config_path), "%s%s", SDL_GetPrefPath("", "m8c"),+ conf->filename);
SDL_RWops *rw = SDL_RWFromFile(config_path, "w");
SDL_Log("Writing config file to %s", config_path);const unsigned int INI_LINE_COUNT = 36;
+ const unsigned int LINELEN = 50;
// Entries for the config file
- char ini_values[INI_LINE_COUNT][50];
+ char ini_values[INI_LINE_COUNT][LINELEN];
int initPointer = 0;
- sprintf(ini_values[initPointer++], "[graphics]\n");
- sprintf(ini_values[initPointer++], "fullscreen=%s\n",
- conf->init_fullscreen ? "true" : "false");
- sprintf(ini_values[initPointer++], "use_gpu=%s\n",
- conf->init_use_gpu ? "true" : "false");
- sprintf(ini_values[initPointer++], "idle_ms=%d\n", conf->idle_ms);
- sprintf(ini_values[initPointer++], "[keyboard]\n");
- sprintf(ini_values[initPointer++], "key_up=%d\n", conf->key_up);
- sprintf(ini_values[initPointer++], "key_left=%d\n", conf->key_left);
- sprintf(ini_values[initPointer++], "key_down=%d\n", conf->key_down);
- sprintf(ini_values[initPointer++], "key_right=%d\n", conf->key_right);
- sprintf(ini_values[initPointer++], "key_select=%d\n", conf->key_select);
- sprintf(ini_values[initPointer++], "key_select_alt=%d\n", conf->key_select_alt);
- sprintf(ini_values[initPointer++], "key_start=%d\n", conf->key_start);
- sprintf(ini_values[initPointer++], "key_start_alt=%d\n", conf->key_start_alt);
- sprintf(ini_values[initPointer++], "key_opt=%d\n", conf->key_opt);
- sprintf(ini_values[initPointer++], "key_opt_alt=%d\n", conf->key_opt_alt);
- sprintf(ini_values[initPointer++], "key_edit=%d\n", conf->key_edit);
- sprintf(ini_values[initPointer++], "key_edit_alt=%d\n", conf->key_edit_alt);
- sprintf(ini_values[initPointer++], "key_delete=%d\n", conf->key_delete);
- sprintf(ini_values[initPointer++], "key_reset=%d\n", conf->key_reset);
- sprintf(ini_values[initPointer++], "[gamepad]\n");
- sprintf(ini_values[initPointer++], "gamepad_up=%d\n", conf->gamepad_up);
- sprintf(ini_values[initPointer++], "gamepad_left=%d\n", conf->gamepad_left);
- sprintf(ini_values[initPointer++], "gamepad_down=%d\n", conf->gamepad_down);
- sprintf(ini_values[initPointer++], "gamepad_right=%d\n", conf->gamepad_right);
- sprintf(ini_values[initPointer++], "gamepad_select=%d\n", conf->gamepad_select);
- sprintf(ini_values[initPointer++], "gamepad_start=%d\n", conf->gamepad_start);
- sprintf(ini_values[initPointer++], "gamepad_opt=%d\n", conf->gamepad_opt);
- sprintf(ini_values[initPointer++], "gamepad_edit=%d\n", conf->gamepad_edit);
- sprintf(ini_values[initPointer++], "gamepad_analog_threshold=%d\n",
- conf->gamepad_analog_threshold);
- sprintf(ini_values[initPointer++], "gamepad_analog_invert=%s\n",
- conf->gamepad_analog_invert ? "true" : "false");
- sprintf(ini_values[initPointer++], "gamepad_analog_axis_updown=%d\n",
- conf->gamepad_analog_axis_updown);
- sprintf(ini_values[initPointer++], "gamepad_analog_axis_leftright=%d\n",
- conf->gamepad_analog_axis_leftright);
- sprintf(ini_values[initPointer++], "gamepad_analog_axis_select=%d\n",
- conf->gamepad_analog_axis_select);
- sprintf(ini_values[initPointer++], "gamepad_analog_axis_start=%d\n",
- conf->gamepad_analog_axis_start);
- sprintf(ini_values[initPointer++], "gamepad_analog_axis_opt=%d\n",
+ snprintf(ini_values[initPointer++], LINELEN, "[graphics]\n");
+ snprintf(ini_values[initPointer++], LINELEN, "fullscreen=%s\n",
+ conf->init_fullscreen ? "true" : "false");
+ snprintf(ini_values[initPointer++], LINELEN, "use_gpu=%s\n",
+ conf->init_use_gpu ? "true" : "false");
+ snprintf(ini_values[initPointer++], LINELEN, "idle_ms=%d\n", conf->idle_ms);
+ snprintf(ini_values[initPointer++], LINELEN, "[keyboard]\n");
+ snprintf(ini_values[initPointer++], LINELEN, "key_up=%d\n", conf->key_up);
+ snprintf(ini_values[initPointer++], LINELEN, "key_left=%d\n", conf->key_left);
+ snprintf(ini_values[initPointer++], LINELEN, "key_down=%d\n", conf->key_down);
+ snprintf(ini_values[initPointer++], LINELEN, "key_right=%d\n",
+ conf->key_right);
+ snprintf(ini_values[initPointer++], LINELEN, "key_select=%d\n",
+ conf->key_select);
+ snprintf(ini_values[initPointer++], LINELEN, "key_select_alt=%d\n",
+ conf->key_select_alt);
+ snprintf(ini_values[initPointer++], LINELEN, "key_start=%d\n",
+ conf->key_start);
+ snprintf(ini_values[initPointer++], LINELEN, "key_start_alt=%d\n",
+ conf->key_start_alt);
+ snprintf(ini_values[initPointer++], LINELEN, "key_opt=%d\n",
+ conf->key_opt);
+ snprintf(ini_values[initPointer++], LINELEN, "key_opt_alt=%d\n",
+ conf->key_opt_alt);
+ snprintf(ini_values[initPointer++], LINELEN, "key_edit=%d\n", conf->key_edit);
+ snprintf(ini_values[initPointer++], LINELEN, "key_edit_alt=%d\n",
+ conf->key_edit_alt);
+ snprintf(ini_values[initPointer++], LINELEN, "key_delete=%d\n",
+ conf->key_delete);
+ snprintf(ini_values[initPointer++], LINELEN, "key_reset=%d\n",
+ conf->key_reset);
+ snprintf(ini_values[initPointer++], LINELEN, "[gamepad]\n");
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_up=%d\n",
+ conf->gamepad_up);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_left=%d\n",
+ conf->gamepad_left);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_down=%d\n",
+ conf->gamepad_down);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_right=%d\n",
+ conf->gamepad_right);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_select=%d\n",
+ conf->gamepad_select);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_start=%d\n",
+ conf->gamepad_start);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_opt=%d\n",
+ conf->gamepad_opt);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_edit=%d\n",
+ conf->gamepad_edit);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_analog_threshold=%d\n",
+ conf->gamepad_analog_threshold);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_analog_invert=%s\n",
+ conf->gamepad_analog_invert ? "true" : "false");
+ snprintf(ini_values[initPointer++], LINELEN,
+ "gamepad_analog_axis_updown=%d\n", conf->gamepad_analog_axis_updown);
+ snprintf(ini_values[initPointer++], LINELEN,
+ "gamepad_analog_axis_leftright=%d\n",
+ conf->gamepad_analog_axis_leftright);
+ snprintf(ini_values[initPointer++], LINELEN,
+ "gamepad_analog_axis_select=%d\n",
+ conf->gamepad_analog_axis_select);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_analog_axis_start=%d\n",
+ conf->gamepad_analog_axis_start);
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_analog_axis_opt=%d\n",
conf->gamepad_analog_axis_opt);
- sprintf(ini_values[initPointer++], "gamepad_analog_axis_edit=%d\n",
+ snprintf(ini_values[initPointer++], LINELEN, "gamepad_analog_axis_edit=%d\n",
conf->gamepad_analog_axis_edit);
// Ensure we aren't writing off the end of the array
@@ -149,7 +171,8 @@
void read_config(config_params_s *conf) { char config_path[1024] = {0};- sprintf(config_path, "%s%s", SDL_GetPrefPath("", "m8c"), conf->filename);+ snprintf(config_path, sizeof(config_path), "%s%s", SDL_GetPrefPath("", "m8c"),+ conf->filename);
SDL_Log("Reading config %s", config_path);ini_t *ini = ini_load(config_path);
if (ini == NULL) {--- a/input.c
+++ b/input.c
@@ -63,7 +63,8 @@
// Try to load the game controller database file
char db_filename[1024] = {0};- sprintf(db_filename, "%sgamecontrollerdb.txt", SDL_GetPrefPath("", "m8c"));+ snprintf(db_filename, sizeof(db_filename), "%sgamecontrollerdb.txt",
+ SDL_GetPrefPath("", "m8c")); SDL_Log("Trying to open game controller database from %s", db_filename);SDL_RWops *db_rw = SDL_RWFromFile(db_filename, "rb");
--- a/render.c
+++ b/render.c
@@ -187,7 +187,7 @@
draw_character(&dcc);
char buf[8];
- sprintf(buf, "%02X %u", velocity, base_octave);
+ snprintf(buf, sizeof(buf), "%02X %u", velocity, base_octave);
for (int i = 3; i >= 0; i--){dcc.c = buf[i];
--
⑨