]> sjero.net Git - wget/blobdiff - src/cookies.c
[svn] Minor fixes prompted by `lint'.
[wget] / src / cookies.c
index a0937e348cc67e2e3c6aae64df7c0106f7da50c1..b4559600a2893c6b2dd0880d69d254390e6fab1b 100644 (file)
@@ -726,9 +726,9 @@ check_domain_match (const char *cookie_domain, const char *host)
     {
       int dlen = strlen (cookie_domain);
       int hlen = strlen (host);
-      /* hostname.foobar.com                   */
-      /*             bar.com                   */
-      /*            ^ <-- must be '.' for host */
+      /* cookie host:    hostname.foobar.com */
+      /* desired domain:             bar.com */
+      /* '.' must be here in host-> ^        */
       if (hlen > dlen && host[hlen - dlen - 1] != '.')
        return 0;
     }
@@ -825,7 +825,7 @@ set_cookie_header_cb (const char *hdr, void *closure)
    SIZE matches are written; if more matches are present, return the
    number of chains that would have been written.  */
 
-int
+static int
 find_matching_chains (const char *host, int port,
                      struct cookie *store[], int size)
 {
@@ -869,13 +869,23 @@ find_matching_chains (const char *host, int port,
 static int
 path_matches (const char *full_path, const char *prefix)
 {
-  int len = strlen (prefix);
-  if (strncmp (full_path, prefix, len))
+  int len;
+
+  if (*prefix != '/')
+    /* Wget's HTTP paths do not begin with '/' (the URL code treats it
+       as a separator), but the '/' is assumed when matching against
+       the cookie stuff.  */
+    return 0;
+
+  ++prefix;
+  len = strlen (prefix);
+
+  if (0 != strncmp (full_path, prefix, len))
     /* FULL_PATH doesn't begin with PREFIX. */
     return 0;
 
   /* Length of PREFIX determines the quality of the match. */
-  return len;
+  return len + 1;
 }
 
 static int