Mercurial > dwindows
comparison gtk3/dw.c @ 2199:8ee74cf778cb
GTK: Increase number buffers to 25 bytes to make sure they can store an
unsigned long value and make sure they are zeroed out. This fixes
warnings from gcc fortify, and improves safety.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 26 Oct 2020 23:05:20 +0000 |
parents | b818a32f7790 |
children | 319eeecb411e |
comparison
equal
deleted
inserted
replaced
2198:e66bc47eec34 | 2199:8ee74cf778cb |
---|---|
3515 | 3515 |
3516 if (strlen(tempbuf) == 0) | 3516 if (strlen(tempbuf) == 0) |
3517 tmphandle=gtk_menu_item_new(); | 3517 tmphandle=gtk_menu_item_new(); |
3518 else | 3518 else |
3519 { | 3519 { |
3520 char numbuf[11] = {0}; | 3520 char numbuf[25] = {0}; |
3521 | 3521 |
3522 if (check) | 3522 if (check) |
3523 { | 3523 { |
3524 tmphandle = gtk_check_menu_item_new_with_label(tempbuf); | 3524 tmphandle = gtk_check_menu_item_new_with_label(tempbuf); |
3525 if (accel && accel_group) | 3525 if (accel && accel_group) |
3527 gtk_label_set_use_underline(GTK_LABEL(gtk_bin_get_child(GTK_BIN(tmphandle))), TRUE); | 3527 gtk_label_set_use_underline(GTK_LABEL(gtk_bin_get_child(GTK_BIN(tmphandle))), TRUE); |
3528 #if 0 /* TODO: This isn't working right */ | 3528 #if 0 /* TODO: This isn't working right */ |
3529 gtk_widget_add_accelerator(tmphandle, "activate", accel_group, tmp_key, GDK_MOD1_MASK, 0); | 3529 gtk_widget_add_accelerator(tmphandle, "activate", accel_group, tmp_key, GDK_MOD1_MASK, 0); |
3530 #endif | 3530 #endif |
3531 } | 3531 } |
3532 snprintf(numbuf, 10, "%lu", id); | 3532 snprintf(numbuf, 24, "%lu", id); |
3533 g_object_set_data(G_OBJECT(menu), numbuf, (gpointer)tmphandle); | 3533 g_object_set_data(G_OBJECT(menu), numbuf, (gpointer)tmphandle); |
3534 } | 3534 } |
3535 else | 3535 else |
3536 { | 3536 { |
3537 tmphandle=gtk_menu_item_new_with_label(tempbuf); | 3537 tmphandle=gtk_menu_item_new_with_label(tempbuf); |
3540 gtk_label_set_use_underline(GTK_LABEL(gtk_bin_get_child(GTK_BIN(tmphandle))), TRUE); | 3540 gtk_label_set_use_underline(GTK_LABEL(gtk_bin_get_child(GTK_BIN(tmphandle))), TRUE); |
3541 #if 0 /* TODO: This isn't working right */ | 3541 #if 0 /* TODO: This isn't working right */ |
3542 gtk_widget_add_accelerator(tmphandle, "activate", accel_group, tmp_key, GDK_MOD1_MASK, 0); | 3542 gtk_widget_add_accelerator(tmphandle, "activate", accel_group, tmp_key, GDK_MOD1_MASK, 0); |
3543 #endif | 3543 #endif |
3544 } | 3544 } |
3545 snprintf(numbuf, 10, "%lu", id); | 3545 snprintf(numbuf, 24, "%lu", id); |
3546 g_object_set_data(G_OBJECT(menu), numbuf, (gpointer)tmphandle); | 3546 g_object_set_data(G_OBJECT(menu), numbuf, (gpointer)tmphandle); |
3547 } | 3547 } |
3548 } | 3548 } |
3549 | 3549 |
3550 gtk_widget_show(tmphandle); | 3550 gtk_widget_show(tmphandle); |
3616 * check: TRUE for checked FALSE for not checked. | 3616 * check: TRUE for checked FALSE for not checked. |
3617 * deprecated: use dw_menu_item_set_state() | 3617 * deprecated: use dw_menu_item_set_state() |
3618 */ | 3618 */ |
3619 void dw_menu_item_set_check(HMENUI menu, unsigned long id, int check) | 3619 void dw_menu_item_set_check(HMENUI menu, unsigned long id, int check) |
3620 { | 3620 { |
3621 char numbuf[11]; | 3621 char numbuf[25] = {0}; |
3622 GtkWidget *tmphandle; | 3622 GtkWidget *tmphandle; |
3623 int _locked_by_me = FALSE; | 3623 int _locked_by_me = FALSE; |
3624 | 3624 |
3625 if(!menu) | 3625 if(!menu) |
3626 return; | 3626 return; |
3627 | 3627 |
3628 DW_MUTEX_LOCK; | 3628 DW_MUTEX_LOCK; |
3629 snprintf(numbuf, 10, "%lu", id); | 3629 snprintf(numbuf, 24, "%lu", id); |
3630 tmphandle = _find_submenu_id(menu, numbuf); | 3630 tmphandle = _find_submenu_id(menu, numbuf); |
3631 | 3631 |
3632 if(tmphandle) | 3632 if(tmphandle) |
3633 { | 3633 { |
3634 _dw_ignore_click = 1; | 3634 _dw_ignore_click = 1; |
3646 * id: Menuitem id. | 3646 * id: Menuitem id. |
3647 * state: TRUE for checked FALSE for not checked. | 3647 * state: TRUE for checked FALSE for not checked. |
3648 */ | 3648 */ |
3649 void dw_menu_item_set_state(HMENUI menu, unsigned long id, unsigned long state) | 3649 void dw_menu_item_set_state(HMENUI menu, unsigned long id, unsigned long state) |
3650 { | 3650 { |
3651 char numbuf[11] = {0}; | 3651 char numbuf[25] = {0}; |
3652 GtkWidget *tmphandle; | 3652 GtkWidget *tmphandle; |
3653 int check; | 3653 int check; |
3654 int _locked_by_me = FALSE; | 3654 int _locked_by_me = FALSE; |
3655 | 3655 |
3656 if(!menu) | 3656 if(!menu) |
3657 return; | 3657 return; |
3658 | 3658 |
3659 DW_MUTEX_LOCK; | 3659 DW_MUTEX_LOCK; |
3660 snprintf(numbuf, 10, "%lu", id); | 3660 snprintf(numbuf, 24, "%lu", id); |
3661 tmphandle = _find_submenu_id(menu, numbuf); | 3661 tmphandle = _find_submenu_id(menu, numbuf); |
3662 | 3662 |
3663 if ( (state & DW_MIS_CHECKED) || (state & DW_MIS_UNCHECKED) ) | 3663 if ( (state & DW_MIS_CHECKED) || (state & DW_MIS_UNCHECKED) ) |
3664 { | 3664 { |
3665 if ( state & DW_MIS_CHECKED ) | 3665 if ( state & DW_MIS_CHECKED ) |
3698 * Returns: | 3698 * Returns: |
3699 * DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure. | 3699 * DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure. |
3700 */ | 3700 */ |
3701 int API dw_menu_delete_item(HMENUI menu, unsigned long id) | 3701 int API dw_menu_delete_item(HMENUI menu, unsigned long id) |
3702 { | 3702 { |
3703 char numbuf[11]; | 3703 char numbuf[25] = {0}; |
3704 GtkWidget *tmphandle; | 3704 GtkWidget *tmphandle; |
3705 int _locked_by_me = FALSE; | 3705 int _locked_by_me = FALSE; |
3706 int ret = DW_ERROR_UNKNOWN; | 3706 int ret = DW_ERROR_UNKNOWN; |
3707 | 3707 |
3708 if(!menu) | 3708 if(!menu) |
3709 return ret; | 3709 return ret; |
3710 | 3710 |
3711 DW_MUTEX_LOCK; | 3711 DW_MUTEX_LOCK; |
3712 snprintf(numbuf, 10, "%lu", id); | 3712 snprintf(numbuf, 24, "%lu", id); |
3713 tmphandle = _find_submenu_id(menu, numbuf); | 3713 tmphandle = _find_submenu_id(menu, numbuf); |
3714 | 3714 |
3715 if(tmphandle) | 3715 if(tmphandle) |
3716 { | 3716 { |
3717 gtk_widget_destroy(tmphandle); | 3717 gtk_widget_destroy(tmphandle); |
5738 #define _DW_CONTAINER_STORE_EXTRA 2 | 5738 #define _DW_CONTAINER_STORE_EXTRA 2 |
5739 | 5739 |
5740 static int _dw_container_setup(HWND handle, unsigned long *flags, char **titles, int count, int separator, int extra) | 5740 static int _dw_container_setup(HWND handle, unsigned long *flags, char **titles, int count, int separator, int extra) |
5741 { | 5741 { |
5742 int z; | 5742 int z; |
5743 char numbuf[25]; | 5743 char numbuf[25] = {0}; |
5744 GtkWidget *tree; | 5744 GtkWidget *tree; |
5745 GtkListStore *store; | 5745 GtkListStore *store; |
5746 GtkTreeViewColumn *col; | 5746 GtkTreeViewColumn *col; |
5747 GtkCellRenderer *rend; | 5747 GtkCellRenderer *rend; |
5748 GtkTreeSelection *sel; | 5748 GtkTreeSelection *sel; |
6109 * Internal representation of dw_container_set_item() extracted so we can pass | 6109 * Internal representation of dw_container_set_item() extracted so we can pass |
6110 * two data pointers; icon and text for dw_filesystem_set_item(). | 6110 * two data pointers; icon and text for dw_filesystem_set_item(). |
6111 */ | 6111 */ |
6112 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data) | 6112 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data) |
6113 { | 6113 { |
6114 char numbuf[21], textbuffer[101] = {0}; | 6114 char numbuf[25] = {0}, textbuffer[101] = {0}; |
6115 int flag = 0; | 6115 int flag = 0; |
6116 GtkWidget *cont; | 6116 GtkWidget *cont; |
6117 GtkListStore *store = NULL; | 6117 GtkListStore *store = NULL; |
6118 int _locked_by_me = FALSE; | 6118 int _locked_by_me = FALSE; |
6119 | 6119 |
6126 | 6126 |
6127 if(store) | 6127 if(store) |
6128 { | 6128 { |
6129 GtkTreeIter iter; | 6129 GtkTreeIter iter; |
6130 | 6130 |
6131 snprintf(numbuf, 20, "_dw_cont_col%d", column); | 6131 snprintf(numbuf, 24, "_dw_cont_col%d", column); |
6132 flag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), numbuf)); | 6132 flag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), numbuf)); |
6133 if(pointer) | 6133 if(pointer) |
6134 { | 6134 { |
6135 row += GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_insertpos")); | 6135 row += GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), "_dw_insertpos")); |
6136 } | 6136 } |
6292 * handle: Handle to the container window (widget). | 6292 * handle: Handle to the container window (widget). |
6293 * column: Zero based column. | 6293 * column: Zero based column. |
6294 */ | 6294 */ |
6295 int dw_container_get_column_type(HWND handle, int column) | 6295 int dw_container_get_column_type(HWND handle, int column) |
6296 { | 6296 { |
6297 char numbuf[20]; | 6297 char numbuf[25] = {0}; |
6298 int flag, rc = 0; | 6298 int flag, rc = 0; |
6299 GtkWidget *cont = handle; | 6299 GtkWidget *cont = handle; |
6300 int _locked_by_me = FALSE; | 6300 int _locked_by_me = FALSE; |
6301 | 6301 |
6302 DW_MUTEX_LOCK; | 6302 DW_MUTEX_LOCK; |
6305 { | 6305 { |
6306 DW_MUTEX_UNLOCK; | 6306 DW_MUTEX_UNLOCK; |
6307 return 0; | 6307 return 0; |
6308 } | 6308 } |
6309 | 6309 |
6310 snprintf(numbuf, 20, "_dw_cont_col%d", column); | 6310 snprintf(numbuf, 24, "_dw_cont_col%d", column); |
6311 flag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), numbuf)); | 6311 flag = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(cont), numbuf)); |
6312 | 6312 |
6313 if(flag & DW_CFA_BITMAPORICON) | 6313 if(flag & DW_CFA_BITMAPORICON) |
6314 rc = DW_CFA_BITMAPORICON; | 6314 rc = DW_CFA_BITMAPORICON; |
6315 else if(flag & DW_CFA_STRING) | 6315 else if(flag & DW_CFA_STRING) |