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)