diff -ur a/src/netstatus-iface.c b/src/netstatus-iface.c
--- a/src/netstatus-iface.c	2007-07-02 10:40:06 +0100
+++ b/src/netstatus-iface.c	2007-07-02 12:13:40 +0100
@@ -55,6 +55,8 @@
 #define NETSTATUS_IFACE_POLLS_IN_ERROR   10   /* no. of polls in error before increasing delay */
 #define NETSTATUS_IFACE_ERROR_POLL_DELAY 5000 /* delay to use when in error state */
 
+#define IF_ADDR_SIZE(p) MAX((p).sa_len, sizeof(p))
+
 enum
 {
   PROP_0,
@@ -1220,7 +1222,7 @@
       struct ifreq *if_req = (struct ifreq *) p;
       gboolean      loopback = FALSE;
 
-      p += sizeof (struct ifreq);
+      p += sizeof(if_req->ifr_name) + IF_ADDR_SIZE(if_req->ifr_addr);
 
       if (ioctl (fd, SIOCGIFFLAGS, if_req) < 0)
 	{
