diff --git a/gio/gsimpleproxyresolver.c b/gio/gsimpleproxyresolver.c index 0dd3c4fc3..2d6009975 100644 --- a/gio/gsimpleproxyresolver.c +++ b/gio/gsimpleproxyresolver.c @@ -50,7 +50,7 @@ typedef struct { gchar *name; - gint length; + gsize length; gushort port; } GSimpleProxyResolverDomain; @@ -259,7 +259,8 @@ ignore_host (GSimpleProxyResolver *resolver, GSimpleProxyResolverPrivate *priv = resolver->priv; gchar *ascii_host = NULL; gboolean ignore = FALSE; - gint i, length, offset; + gsize offset, length; + guint i; if (priv->ignore_ips) { @@ -297,6 +298,9 @@ ignore_host (GSimpleProxyResolver *resolver, { GSimpleProxyResolverDomain *domain = &priv->ignore_domains[i]; + if (domain->length > length) + continue; + offset = length - domain->length; if ((domain->port == 0 || domain->port == port) && (offset == 0 || (offset > 0 && host[offset - 1] == '.')) &&