void gtk_c_on_menu_options_edit_toggle (GtkWidget *menu, gpointer userdata) { GtkWidget *notebook, *toolbar_edit, *widget, *warning; struct gtk_s_helper *helper; u_int8_t i, j, mode; struct commands_param *param; char tmp_name[5], *text; helper = (struct gtk_s_helper *)userdata; notebook = lookup_widget(GTK_WIDGET(menu), "main_vhv2_notebook"); toolbar_edit = lookup_widget(GTK_WIDGET(menu), "toolbar_edit"); mode = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook)); if (helper->edit_mode) { for(i = 0; i < MAX_PROTOCOLS; i++) { if (protocols[i].visible) { param = (struct commands_param *)protocols[i].parameters; for (j = 0; j < protocols[i].nparams; j++) { if ((param[j].type != FIELD_DEFAULT) && (param[j].type != FIELD_IFACE) && (param[j].type != FIELD_EXTRA)) { snprintf(tmp_name, 5, "%02d%02d", i, j); widget = lookup_widget(GTK_WIDGET(notebook), tmp_name); text = (char *) gtk_entry_get_text(GTK_ENTRY(widget)); if (parser_filter_param(param[j].type, helper->node->protocol[i].commands_param[j], text, param[j].size_print, param[j].size) < 0) { warning = gtk_i_create_warningdialog("Bad Parameter %s with wrong value %s in protocol %s!", param[j].ldesc, text, protocols[i].namep); gtk_widget_show(warning); //break; } gtk_entry_set_editable(GTK_ENTRY(widget), FALSE); } } } } helper->edit_mode = 0; gtk_statusbar_push(GTK_STATUSBAR(helper->statusbar), 0, "Edit mode disabled"); } else { helper->edit_mode = 1; for (i = 0; i < MAX_PROTOCOLS; i++) { if (protocols[i].visible) { param = (struct commands_param *)protocols[i].parameters; for (j = 0; j < protocols[i].nparams; j++) { if ((param[j].type != FIELD_DEFAULT) && (param[j].type != FIELD_IFACE) && (param[j].type != FIELD_EXTRA)) { snprintf(tmp_name, 5, "%02d%02d", i, j); widget = lookup_widget(GTK_WIDGET(notebook), tmp_name); gtk_entry_set_editable(GTK_ENTRY(widget), TRUE); } } } } gtk_statusbar_push(GTK_STATUSBAR(helper->statusbar), 0, "Edit mode enabled"); } }
/* * Filter all attack parameters * On success Return 0. * On error Return -1 and error field number on "field". */ int8_t attack_filter_all_params(struct attack_param *attack_param, u_int8_t nparams, u_int8_t *field) { u_int8_t j; for (j=0; j<nparams; j++) { if ( parser_filter_param(attack_param[j].type, attack_param[j].value, attack_param[j].print, attack_param[j].size_print, attack_param[j].min, attack_param[j].max ) < 0 ) { *field = j; return -1; } } return 0; }