I have proposed a patch to fix two bugs: * in netinfo when you launch a port scan and you try to exit tool while a child process is still running, the tool doesn't exit cleanly. * bug #114894 -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Carlos Garcia Campos a.k.a. KaL elkalmail yahoo es carlosgc gnome org Grupo Linups Usuarios de SL/Linux de la UPSAM http://www.linups.org =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= PGP key: http://pgp.rediris.es:11371/pks/lookup?op=get&search=0x523E6462
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gnome-network/gnome-netinfo/ChangeLog,v
retrieving revision 1.93
diff -u -u -r1.93 ChangeLog
--- ChangeLog 2 Oct 2003 21:26:16 -0000 1.93
+++ ChangeLog 26 Oct 2003 11:50:34 -0000
@@ -1,3 +1,12 @@
+2003-10-26 Carlos García Campos <carlosgc gnome org>
+
+ * callbacks.[ch] (gn_quit_app), gnome-netinfo.glade:
+ kill of all the children before exit
+ * netinfo.[ch] (validate_host): function to validate a host
+ fixes bug #114894
+ * ping.c (ping_do), scan.c (scan_do), traceroute.c (traceroute_do):
+ validates the host before doing the action, fixes bug #114894
+
2003-10-02 Carlos García Campos <carlosgc gnome org>
* netinfo.c (get_ip_version): added a function to get the
Index: callbacks.c
===================================================================
RCS file: /cvs/gnome/gnome-network/gnome-netinfo/callbacks.c,v
retrieving revision 1.25
diff -u -u -r1.25 callbacks.c
--- callbacks.c 25 Aug 2003 15:54:37 -0000 1.25
+++ callbacks.c 26 Oct 2003 11:50:34 -0000
@@ -32,6 +32,10 @@
#include "scan.h"
#include "finger.h"
+#include "sys/wait.h"
+#include "unistd.h"
+#include "sys/types.h"
+
/* Ping callbacks */
void
on_ping_activate (GtkWidget * widget, gpointer data)
@@ -136,6 +140,23 @@
} else {
finger_do (finger);
}
+}
+
+void
+gn_quit_app (GtkWidget * widget, gpointer data)
+{
+ gint status, pid;
+
+ pid = getpid () + 1;
+
+ while (waitpid (-1, &status, WNOHANG) == 0) {
+ if (waitpid (pid, &status, WNOHANG) == 0)
+ kill (pid, SIGKILL);
+ pid ++;
+ }
+
+ gtk_main_quit ();
+
}
void
Index: callbacks.h
===================================================================
RCS file: /cvs/gnome/gnome-network/gnome-netinfo/callbacks.h,v
retrieving revision 1.9
diff -u -u -r1.9 callbacks.h
--- callbacks.h 31 Jul 2003 20:34:40 -0000 1.9
+++ callbacks.h 26 Oct 2003 11:50:35 -0000
@@ -15,6 +15,8 @@
void on_finger_activate (GtkWidget * editable, gpointer data);
/* General stuff */
+void gn_quit_app (GtkWidget * widget, gpointer data);
+
void on_about_activate (GtkWidget * parent, gpointer data);
void on_copy_activate (GtkWidget * notebook, gpointer data);
Index: gnome-netinfo.glade
===================================================================
RCS file: /cvs/gnome/gnome-network/gnome-netinfo/gnome-netinfo.glade,v
retrieving revision 1.26
diff -u -u -r1.26 gnome-netinfo.glade
--- gnome-netinfo.glade 31 Jul 2003 20:34:40 -0000 1.26
+++ gnome-netinfo.glade 26 Oct 2003 11:50:35 -0000
@@ -14,7 +14,7 @@
<property name="default_height">490</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
- <signal name="delete_event" handler="gtk_main_quit" last_modification_time="Mon, 09 Dec 2002 02:18:33 GMT"/>
+ <signal name="delete_event" handler="gn_quit_app" last_modification_time="Sun, 26 Oct 2003 10:04:54 GMT"/>
<child>
<widget class="GtkVBox" id="vbox_main">
@@ -38,7 +38,7 @@
<widget class="GtkImageMenuItem" id="m_quit">
<property name="visible">True</property>
<property name="stock_item">GNOMEUIINFO_MENU_EXIT_ITEM</property>
- <signal name="activate" handler="gtk_main_quit" last_modification_time="Mon, 07 Jul 2003 12:37:48 GMT"/>
+ <signal name="activate" handler="gn_quit_app" last_modification_time="Sun, 26 Oct 2003 10:05:12 GMT"/>
</widget>
</child>
</widget>
@@ -58,7 +58,7 @@
<widget class="GtkImageMenuItem" id="m_copy">
<property name="visible">True</property>
<property name="stock_item">GNOMEUIINFO_MENU_COPY_ITEM</property>
- <signal name="activate" handler="on_copy_activate" object="notebook" last_modification_time="Sun, 20 Jul 2003 22:11:25 GMT"/>
+ <signal name="activate" handler="on_copy_activate" last_modification_time="Sun, 20 Jul 2003 22:11:25 GMT"/>
</widget>
</child>
</widget>
@@ -78,7 +78,7 @@
<widget class="GtkImageMenuItem" id="m_about">
<property name="visible">True</property>
<property name="stock_item">GNOMEUIINFO_MENU_ABOUT_ITEM</property>
- <signal name="activate" handler="on_about_activate" object="main_window" last_modification_time="Sun, 20 Jul 2003 20:50:30 GMT"/>
+ <signal name="activate" handler="on_about_activate" last_modification_time="Sun, 20 Jul 2003 20:50:30 GMT"/>
</widget>
</child>
</widget>
Index: netinfo.c
===================================================================
RCS file: /cvs/gnome/gnome-network/gnome-netinfo/netinfo.c,v
retrieving revision 1.14
diff -u -u -r1.14 netinfo.c
--- netinfo.c 2 Oct 2003 21:26:16 -0000 1.14
+++ netinfo.c 26 Oct 2003 11:50:35 -0000
@@ -120,6 +120,27 @@
return -1;
}
+gboolean
+netinfo_validate_host (Netinfo * netinfo)
+{
+ struct hostent *hostname;
+ const gchar *host;
+
+ host = netinfo_get_host (netinfo);
+
+ hostname = gethostbyname2 (host, PF_INET6);
+ if (hostname == NULL) {
+ hostname = gethostbyname2 (host, AF_INET);
+ if (hostname == NULL) {
+ gnome_error_dialog_parented (_("The host cannot be found."),
+ NULL);
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
void
netinfo_process_command (Netinfo * netinfo)
{
Index: netinfo.h
===================================================================
RCS file: /cvs/gnome/gnome-network/gnome-netinfo/netinfo.h,v
retrieving revision 1.14
diff -u -u -r1.14 netinfo.h
--- netinfo.h 2 Oct 2003 21:26:16 -0000 1.14
+++ netinfo.h 26 Oct 2003 11:50:35 -0000
@@ -116,6 +116,7 @@
const gchar * netinfo_get_host (Netinfo * netinfo);
const gchar * netinfo_get_user (Netinfo * netinfo);
gint netinfo_get_ip_version (Netinfo * netinfo);
+gboolean netinfo_validate_host (Netinfo * netinfo);
void netinfo_toggle_button (Netinfo * netinfo);
void netinfo_toggle_state (Netinfo * netinfo, gboolean state,
gpointer user_data);
Index: ping.c
===================================================================
RCS file: /cvs/gnome/gnome-network/gnome-netinfo/ping.c,v
retrieving revision 1.20
diff -u -u -r1.20 ping.c
--- ping.c 2 Oct 2003 21:26:16 -0000 1.20
+++ ping.c 26 Oct 2003 11:50:35 -0000
@@ -63,6 +63,11 @@
g_return_if_fail (netinfo != NULL);
+ if (netinfo_validate_host (netinfo) == FALSE) {
+ netinfo_stop_process_command (netinfo);
+ return;
+ }
+
count = netinfo_get_count (netinfo);
host = netinfo_get_host (netinfo);
Index: scan.c
===================================================================
RCS file: /cvs/gnome/gnome-network/gnome-netinfo/scan.c,v
retrieving revision 1.6
diff -u -u -r1.6 scan.c
--- scan.c 2 Oct 2003 21:26:16 -0000 1.6
+++ scan.c 26 Oct 2003 11:50:35 -0000
@@ -67,6 +67,11 @@
g_return_if_fail (netinfo != NULL);
+ if (netinfo_validate_host (netinfo) == FALSE) {
+ netinfo_stop_process_command (netinfo);
+ return;
+ }
+
host = netinfo_get_host (netinfo);
/* Clear the current output */
Index: traceroute.c
===================================================================
RCS file: /cvs/gnome/gnome-network/gnome-netinfo/traceroute.c,v
retrieving revision 1.17
diff -u -u -r1.17 traceroute.c
--- traceroute.c 2 Oct 2003 21:26:16 -0000 1.17
+++ traceroute.c 26 Oct 2003 11:50:35 -0000
@@ -47,6 +47,11 @@
g_return_if_fail (netinfo != NULL);
+ if (netinfo_validate_host (netinfo) == FALSE) {
+ netinfo_stop_process_command (netinfo);
+ return;
+ }
+
host = netinfo_get_host (netinfo);
model = gtk_tree_view_get_model (GTK_TREE_VIEW (netinfo->output));
Attachment:
signature.asc
Description: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada digitalmente