commit 33e49574529be97e5266afdbcd2feed9184213be
parent af0bbfe83e52c25273ef1b4a4caa77211117b43c
Author: nibo <nibo@relim.de>
Date: Sat, 29 Mar 2025 19:06:27 +0100
Replace sprintf with snprintf
Diffstat:
6 files changed, 26 insertions(+), 21 deletions(-)
diff --git a/src/chord_diagram.c b/src/chord_diagram.c
@@ -456,9 +456,10 @@ string_diagram_draw(
}
} else {
double base_pos_x;
- char base_position[5];
+ size_t base_size = 5;
+ char base_position[base_size];
base_position[4] = 0;
- sprintf((char *)&base_position, "%d", diagram->base_fret);
+ snprintf((char *)&base_position, base_size, "%d", diagram->base_fret);
if (diagram->base_fret > 9) {
base_pos_x = x - field_width - field_width;
} else {
@@ -689,9 +690,10 @@ debug_chord_diagram_print(struct ChordDiagram *diagram)
printf("---- CHORD DIAGRAM BEGIN ----\n");
printf("show: %s\n", diagram->show ? "true" : "false");
- char str[8];
- str[7] = 0;
- sprintf((char *)&str, "#%02X%02X%02X", diagram->color->red, diagram->color->green, diagram->color->blue);
+ size_t size = 8;
+ char str[size];
+ // str[7] = 0;
+ snprintf((char *)&str, size, "#%02X%02X%02X", diagram->color->red, diagram->color->green, diagram->color->blue);
printf("color: %s\n", str);
diff --git a/src/chordpro.c b/src/chordpro.c
@@ -383,7 +383,7 @@ cho_rgbcolor_to_string(struct RGBColor *color)
{
static char str[8];
str[7] = 0;
- sprintf((char *)&str, "#%02X%02X%02X", color->red, color->green, color->blue);
+ snprintf((char *)&str, 8, "#%02X%02X%02X", color->red, color->green, color->blue);
return (const char *)&str;
}
diff --git a/src/config.c b/src/config.c
@@ -106,8 +106,9 @@ config_log(
{
va_list va;
va_start(va, msg);
- char str[10+strlen(toml_section)+strlen(msg)+1];
- sprintf((char *)&str, "section %s: %s", toml_section, msg);
+ size_t size = 10 + strlen(toml_section) + strlen(msg) + 1;
+ char str[size];
+ snprintf((char *)&str, size, "section %s: %s", toml_section, msg);
util_vlog(ctx->config_filepath, 0, level, str, va);
}
@@ -554,7 +555,7 @@ config_load_style(
char err[25];
if (!config_load_font(style->font, font_section, presence, &err)) {
LOG_DEBUG("config_load_font failed.");
- sprintf((char *)err_buf, "font.%s", err);
+ snprintf((char *)err_buf, 38, "font.%s", err);
return false;
}
}
@@ -1008,9 +1009,10 @@ config_load(toml_table_t *toml, const char *filepath)
key = toml_table_table(styles, key_name);
if (key) {
style = config->output->styles[ttype];
- char toml_section_name[16+strlen(key_name)+1];
+ size_t size = 16 + strlen(key_name) + 1;
+ char toml_section_name[size];
char err[38];
- sprintf((char *)&toml_section_name, "[output.styles.%s]", key_name);
+ snprintf((char *)&toml_section_name, size, "[output.styles.%s]", key_name);
if (!config_load_style(style, key, &presences[ttype], &err)) {
LOG_DEBUG("config_load_style failed.");
config_log(&ctx, LOG_ERR, toml_section_name, err);
diff --git a/src/core.c b/src/core.c
@@ -570,9 +570,9 @@ size_to_string(struct Size *size)
{
static char str[10+1];
if (size->d > 999999) {
- sprintf((char *)&str, ">999.999");
+ snprintf((char *)&str, 10+1, ">999.999");
} else {
- sprintf((char *)&str, "%.1f%s", size->d, size_type_to_string(size->type));
+ snprintf((char *)&str, 10+1, "%.1f%s", size->d, size_type_to_string(size->type));
}
return str;
}
diff --git a/src/lorid.c b/src/lorid.c
@@ -68,9 +68,9 @@ main(int argc, char *argv[])
util_log(NULL, 0, LOG_ERR, "Failed to read the environment variable 'HOME'.");
return 1;
}
- char default_config_path[26+strlen(home)+1];
- sprintf(default_config_path, "%s/.config/lorid/config.toml", home);
- printf("default config path '%s'\n", default_config_path);
+ size_t size = 26 + strlen(home) + 1;
+ char default_config_path[size];
+ snprintf(default_config_path, size, "%s/.config/lorid/config.toml", home);
config = config_load_from_file(default_config_path);
if (!config) {
printf("Loading default config instead of reading from a file.\n");
diff --git a/src/out_pdf.c b/src/out_pdf.c
@@ -1053,7 +1053,7 @@ image_name(struct PDFContext *ctx, struct ChoImage *image)
return NULL;
}
memset(tmp, 0, PATH_MAX);
- sprintf((char *)&tmp, "%ld", s.st_ino);
+ snprintf((char *)&tmp, PATH_MAX, "%ld", s.st_ino);
return strdup(tmp);
}
@@ -1710,7 +1710,7 @@ numeral_system_number_to_str(enum NumeralSystem system, int n)
return str;
} else {
static char str[11+1];
- sprintf((char *)&str, "%d", n);
+ snprintf((char *)&str, 11+1, "%d", n);
return str;
}
}
@@ -1887,7 +1887,8 @@ pdf_texts_add_toc_entry(
double page_no_width, dots_width;
int index, line_count;
char tmp[strlen(entry->title)+1];
- char page_no[11+1];
+ size_t page_no_size = 11 + 1;
+ char page_no[page_no_size];
strcpy((char *)&tmp, entry->title);
width = text_width(ctx, entry->title, style);
if (width == ERROR) {
@@ -1949,7 +1950,7 @@ pdf_texts_add_toc_entry(
(*texts)[ctx->t_ctx.text]->y = ctx->t_ctx.y;
(*texts)[ctx->t_ctx.text]->width = width;
ctx->t_ctx.text++;
- sprintf((char *)&page_no, "%d", entry->page_index+1);
+ snprintf((char *)&page_no, page_no_size, "%d", entry->page_index+1);
width = text_width(ctx, page_no, style);
if (width == ERROR) {
LOG_DEBUG("text_width failed.");
@@ -2009,7 +2010,7 @@ pdf_texts_add_toc_entry(
}
(*texts)[ctx->t_ctx.text]->width = width;
ctx->t_ctx.text++;
- sprintf((char *)&page_no, "%d", entry->page_index+1);
+ snprintf((char *)&page_no, page_no_size, "%d", entry->page_index+1);
page_no_width = text_width(ctx, page_no, style);
if (page_no_width == ERROR) {
LOG_DEBUG("text_width failed.");