comparison gtk/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 e66bc47eec34
children ae6626a4331f
comparison
equal deleted inserted replaced
2198:e66bc47eec34 2199:8ee74cf778cb
3916 3916
3917 if (strlen(tempbuf) == 0) 3917 if (strlen(tempbuf) == 0)
3918 tmphandle=gtk_menu_item_new(); 3918 tmphandle=gtk_menu_item_new();
3919 else 3919 else
3920 { 3920 {
3921 char numbuf[11] = {0}; 3921 char numbuf[25] = {0};
3922 3922
3923 if (check) 3923 if (check)
3924 { 3924 {
3925 if (accel && accel_group) 3925 if (accel && accel_group)
3926 { 3926 {
3932 #endif 3932 #endif
3933 } 3933 }
3934 else 3934 else
3935 tmphandle = gtk_check_menu_item_new_with_label(tempbuf); 3935 tmphandle = gtk_check_menu_item_new_with_label(tempbuf);
3936 gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(tmphandle), TRUE); 3936 gtk_check_menu_item_set_show_toggle(GTK_CHECK_MENU_ITEM(tmphandle), TRUE);
3937 snprintf(numbuf, 10, "%lu", id); 3937 snprintf(numbuf, 24, "%lu", id);
3938 gtk_object_set_data(GTK_OBJECT(menu), numbuf, (gpointer)tmphandle); 3938 gtk_object_set_data(GTK_OBJECT(menu), numbuf, (gpointer)tmphandle);
3939 } 3939 }
3940 else 3940 else
3941 { 3941 {
3942 if (accel && accel_group) 3942 if (accel && accel_group)
3948 gtk_widget_add_accelerator(tmphandle, "activate", accel_group, tmp_key, GDK_MOD1_MASK, 0); 3948 gtk_widget_add_accelerator(tmphandle, "activate", accel_group, tmp_key, GDK_MOD1_MASK, 0);
3949 #endif 3949 #endif
3950 } 3950 }
3951 else 3951 else
3952 tmphandle=gtk_menu_item_new_with_label(tempbuf); 3952 tmphandle=gtk_menu_item_new_with_label(tempbuf);
3953 snprintf(numbuf, 10, "%lu", id); 3953 snprintf(numbuf, 24, "%lu", id);
3954 gtk_object_set_data(GTK_OBJECT(menu), numbuf, (gpointer)tmphandle); 3954 gtk_object_set_data(GTK_OBJECT(menu), numbuf, (gpointer)tmphandle);
3955 } 3955 }
3956 } 3956 }
3957 3957
3958 gtk_widget_show(tmphandle); 3958 gtk_widget_show(tmphandle);
4024 * check: TRUE for checked FALSE for not checked. 4024 * check: TRUE for checked FALSE for not checked.
4025 * deprecated: use dw_menu_item_set_state() 4025 * deprecated: use dw_menu_item_set_state()
4026 */ 4026 */
4027 void dw_menu_item_set_check(HMENUI menu, unsigned long id, int check) 4027 void dw_menu_item_set_check(HMENUI menu, unsigned long id, int check)
4028 { 4028 {
4029 char numbuf[11] = {0}; 4029 char numbuf[25] = {0};
4030 GtkWidget *tmphandle; 4030 GtkWidget *tmphandle;
4031 int _locked_by_me = FALSE; 4031 int _locked_by_me = FALSE;
4032 4032
4033 if(!menu) 4033 if(!menu)
4034 return; 4034 return;
4035 4035
4036 DW_MUTEX_LOCK; 4036 DW_MUTEX_LOCK;
4037 snprintf(numbuf, 10, "%lu", id); 4037 snprintf(numbuf, 24, "%lu", id);
4038 tmphandle = _find_submenu_id(menu, numbuf); 4038 tmphandle = _find_submenu_id(menu, numbuf);
4039 4039
4040 if(tmphandle) 4040 if(tmphandle)
4041 { 4041 {
4042 _dw_ignore_click = 1; 4042 _dw_ignore_click = 1;
4054 * id: Menuitem id. 4054 * id: Menuitem id.
4055 * state: TRUE for checked FALSE for not checked. 4055 * state: TRUE for checked FALSE for not checked.
4056 */ 4056 */
4057 void dw_menu_item_set_state(HMENUI menu, unsigned long id, unsigned long state) 4057 void dw_menu_item_set_state(HMENUI menu, unsigned long id, unsigned long state)
4058 { 4058 {
4059 char numbuf[11] = {0}; 4059 char numbuf[25] = {0};
4060 GtkWidget *tmphandle; 4060 GtkWidget *tmphandle;
4061 int check; 4061 int check;
4062 int _locked_by_me = FALSE; 4062 int _locked_by_me = FALSE;
4063 4063
4064 if(!menu) 4064 if(!menu)
4065 return; 4065 return;
4066 4066
4067 DW_MUTEX_LOCK; 4067 DW_MUTEX_LOCK;
4068 snprintf(numbuf, 10, "%lu", id); 4068 snprintf(numbuf, 24, "%lu", id);
4069 tmphandle = _find_submenu_id(menu, numbuf); 4069 tmphandle = _find_submenu_id(menu, numbuf);
4070 4070
4071 if ( (state & DW_MIS_CHECKED) || (state & DW_MIS_UNCHECKED) ) 4071 if ( (state & DW_MIS_CHECKED) || (state & DW_MIS_UNCHECKED) )
4072 { 4072 {
4073 if ( state & DW_MIS_CHECKED ) 4073 if ( state & DW_MIS_CHECKED )
4106 * Returns: 4106 * Returns:
4107 * DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure. 4107 * DW_ERROR_NONE (0) on success or DW_ERROR_UNKNOWN on failure.
4108 */ 4108 */
4109 int API dw_menu_delete_item(HMENUI menu, unsigned long id) 4109 int API dw_menu_delete_item(HMENUI menu, unsigned long id)
4110 { 4110 {
4111 char numbuf[11]; 4111 char numbuf[25] = {0};
4112 GtkWidget *tmphandle; 4112 GtkWidget *tmphandle;
4113 int _locked_by_me = FALSE; 4113 int _locked_by_me = FALSE;
4114 int ret = DW_ERROR_UNKNOWN; 4114 int ret = DW_ERROR_UNKNOWN;
4115 4115
4116 if(!menu || !id) 4116 if(!menu || !id)
4117 return ret; 4117 return ret;
4118 4118
4119 DW_MUTEX_LOCK; 4119 DW_MUTEX_LOCK;
4120 snprintf(numbuf, 10, "%lu", id); 4120 snprintf(numbuf, 24, "%lu", id);
4121 tmphandle = _find_submenu_id(menu, numbuf); 4121 tmphandle = _find_submenu_id(menu, numbuf);
4122 4122
4123 if(tmphandle) 4123 if(tmphandle)
4124 { 4124 {
4125 gtk_widget_destroy(tmphandle); 4125 gtk_widget_destroy(tmphandle);
4187 4187
4188 DW_MUTEX_LOCK; 4188 DW_MUTEX_LOCK;
4189 #ifdef GDK_WINDOWING_X11 4189 #ifdef GDK_WINDOWING_X11
4190 # if GTK_CHECK_VERSION(2,8,0) 4190 # if GTK_CHECK_VERSION(2,8,0)
4191 gdk_display_warp_pointer( gdk_display_get_default(), gdk_screen_get_default(), x, y ); 4191 gdk_display_warp_pointer( gdk_display_get_default(), gdk_screen_get_default(), x, y );
4192 // gdk_display_warp_pointer( GDK_DISPLAY(), gdk_screen_get_default(), x, y );
4193 # else 4192 # else
4194 XWarpPointer(GDK_DISPLAY(), None, GDK_ROOT_WINDOW(), 0,0,0,0, x, y); 4193 XWarpPointer(GDK_DISPLAY(), None, GDK_ROOT_WINDOW(), 0,0,0,0, x, y);
4195 # endif 4194 # endif
4196 #endif 4195 #endif
4197 DW_MUTEX_UNLOCK; 4196 DW_MUTEX_UNLOCK;
7336 * Internal representation of dw_container_set_item() extracted so we can pass 7335 * Internal representation of dw_container_set_item() extracted so we can pass
7337 * two data pointers; icon and text for dw_filesystem_set_item(). 7336 * two data pointers; icon and text for dw_filesystem_set_item().
7338 */ 7337 */
7339 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data, const char *text) 7338 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data, const char *text)
7340 { 7339 {
7341 char numbuf[11] = {0}, textbuffer[101] = {0}; 7340 char numbuf[25] = {0}, textbuffer[101] = {0};
7342 int flag = 0; 7341 int flag = 0;
7343 GtkWidget *clist; 7342 GtkWidget *clist;
7344 int _locked_by_me = FALSE; 7343 int _locked_by_me = FALSE;
7345 7344
7346 DW_MUTEX_LOCK; 7345 DW_MUTEX_LOCK;
7349 { 7348 {
7350 DW_MUTEX_UNLOCK; 7349 DW_MUTEX_UNLOCK;
7351 return; 7350 return;
7352 } 7351 }
7353 7352
7354 snprintf(numbuf, 10, "%d", column); 7353 snprintf(numbuf, 24, "%d", column);
7355 flag = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(clist), numbuf)); 7354 flag = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(clist), numbuf));
7356 if(pointer) 7355 if(pointer)
7357 { 7356 {
7358 row += GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(clist), "_dw_insertpos")); 7357 row += GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(clist), "_dw_insertpos"));
7359 } 7358 }
7522 * handle: Handle to the container window (widget). 7521 * handle: Handle to the container window (widget).
7523 * column: Zero based column. 7522 * column: Zero based column.
7524 */ 7523 */
7525 int dw_container_get_column_type(HWND handle, int column) 7524 int dw_container_get_column_type(HWND handle, int column)
7526 { 7525 {
7527 char numbuf[11] = {0}; 7526 char numbuf[25] = {0};
7528 int flag, rc; 7527 int flag, rc;
7529 GtkWidget *clist; 7528 GtkWidget *clist;
7530 int _locked_by_me = FALSE; 7529 int _locked_by_me = FALSE;
7531 7530
7532 DW_MUTEX_LOCK; 7531 DW_MUTEX_LOCK;
7535 { 7534 {
7536 DW_MUTEX_UNLOCK; 7535 DW_MUTEX_UNLOCK;
7537 return 0; 7536 return 0;
7538 } 7537 }
7539 7538
7540 snprintf(numbuf, 10, "%d", column); 7539 snprintf(numbuf, 24, "%d", column);
7541 flag = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(clist), numbuf)); 7540 flag = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(clist), numbuf));
7542 7541
7543 if(flag & DW_CFA_BITMAPORICON) 7542 if(flag & DW_CFA_BITMAPORICON)
7544 rc = DW_CFA_BITMAPORICON; 7543 rc = DW_CFA_BITMAPORICON;
7545 else if(flag & DW_CFA_STRING) 7544 else if(flag & DW_CFA_STRING)