Replace sprintf with snprintf
This commit is contained in:
@@ -60,9 +60,9 @@ void expand_exec(DesktopEntry *entry, const char *path)
|
||||
// %c -> Name
|
||||
// %k -> path
|
||||
if (entry->exec) {
|
||||
char *exec2 = calloc(strlen(entry->exec) + (entry->name ? strlen(entry->name) : 1) +
|
||||
(entry->icon ? strlen(entry->icon) : 1) + 100,
|
||||
1);
|
||||
size_t buf_size = strlen(entry->exec) + (entry->name ? strlen(entry->name) : 1) +
|
||||
(entry->icon ? strlen(entry->icon) : 1) + 100;
|
||||
char *exec2 = calloc(buf_size, 1);
|
||||
char *p, *q;
|
||||
// p will never point to an escaped char
|
||||
for (p = entry->exec, q = exec2; *p; p++, q++) {
|
||||
@@ -82,23 +82,30 @@ void expand_exec(DesktopEntry *entry, const char *path)
|
||||
if (!*p)
|
||||
break;
|
||||
if (*p == 'i' && entry->icon != NULL) {
|
||||
sprintf(q, "--icon '%s'", entry->icon);
|
||||
snprintf(q, buf_size, "--icon '%s'", entry->icon);
|
||||
char *old = q;
|
||||
q += strlen("--icon ''");
|
||||
q += strlen(entry->icon);
|
||||
buf_size -= (size_t)(q - old);
|
||||
q--; // To balance the q++ in the for
|
||||
} else if (*p == 'c' && entry->name != NULL) {
|
||||
sprintf(q, "'%s'", entry->name);
|
||||
snprintf(q, buf_size, "'%s'", entry->name);
|
||||
char *old = q;
|
||||
q += strlen("''");
|
||||
q += strlen(entry->name);
|
||||
buf_size -= (size_t)(q - old);
|
||||
q--; // To balance the q++ in the for
|
||||
} else if (*p == 'c') {
|
||||
sprintf(q, "'%s'", path);
|
||||
snprintf(q, buf_size, "'%s'", path);
|
||||
char *old = q;
|
||||
q += strlen("''");
|
||||
q += strlen(path);
|
||||
buf_size -= (size_t)(q - old);
|
||||
q--; // To balance the q++ in the for
|
||||
} else if (*p == 'f' || *p == 'F') {
|
||||
sprintf(q, "%c%c", '%', *p);
|
||||
snprintf(q, buf_size, "%c%c", '%', *p);
|
||||
q += 2;
|
||||
buf_size -= 2;
|
||||
q--; // To balance the q++ in the for
|
||||
} else {
|
||||
// We don't care about other expansions
|
||||
|
||||
@@ -621,7 +621,7 @@ char *get_icon_path_helper(GSList *themes, const char *icon_name, int size)
|
||||
}
|
||||
file_name[0] = 0;
|
||||
// filename = directory/$(themename)/subdirectory/iconname.extension
|
||||
sprintf(file_name, "%s/%s/%s/%s%s", base_name, theme_name, dir_name, icon_name, extension);
|
||||
snprintf(file_name, (size_t)file_name_size, "%s/%s/%s/%s%s", base_name, theme_name, dir_name, icon_name, extension);
|
||||
if (debug_icons)
|
||||
fprintf(stderr, "tint2: Checking %s\n", file_name);
|
||||
if (g_file_test(file_name, G_FILE_TEST_EXISTS)) {
|
||||
@@ -679,9 +679,10 @@ char *get_icon_path_helper(GSList *themes, const char *icon_name, int size)
|
||||
for (GSList *ext = extensions; ext; ext = g_slist_next(ext)) {
|
||||
char *base_name = (char *)base->data;
|
||||
char *extension = (char *)ext->data;
|
||||
file_name = calloc(strlen(base_name) + strlen(icon_name) + strlen(extension) + 100, 1);
|
||||
size_t file_name_size = strlen(base_name) + strlen(icon_name) + strlen(extension) + 100;
|
||||
file_name = calloc(file_name_size, 1);
|
||||
// filename = directory/iconname.extension
|
||||
sprintf(file_name, "%s/%s%s", base_name, icon_name, extension);
|
||||
snprintf(file_name, file_name_size, "%s/%s%s", base_name, icon_name, extension);
|
||||
if (debug_icons)
|
||||
fprintf(stderr, "tint2: Checking %s\n", file_name);
|
||||
if (g_file_test(file_name, G_FILE_TEST_EXISTS)) {
|
||||
|
||||
@@ -470,7 +470,7 @@ void launcher_load_icons(Launcher *launcher)
|
||||
launcherIcon->area.size_mode = LAYOUT_FIXED;
|
||||
launcherIcon->area._resize = NULL;
|
||||
launcherIcon->area._compute_desired_size = launcher_icon_compute_desired_size;
|
||||
sprintf(launcherIcon->area.name, "LauncherIcon %d", index);
|
||||
snprintf(launcherIcon->area.name, sizeof(launcherIcon->area.name), "LauncherIcon %d", index);
|
||||
launcherIcon->area.resize_needed = 0;
|
||||
launcherIcon->area.has_mouse_over_effect = panel_config.mouse_effects;
|
||||
launcherIcon->area.has_mouse_press_effect = launcherIcon->area.has_mouse_over_effect;
|
||||
|
||||
Reference in New Issue
Block a user