GNU bug report logs -
#17958
SHR: base handling broken (shr-parse-base, shr-expand-url)
Previous Next
Reported by: Ivan Shmakov <ivan <at> siamics.net>
Date: Sun, 6 Jul 2014 18:47:01 UTC
Severity: normal
Tags: fixed, patch
Fixed in version 25.1
Done: Lars Magne Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Package: emacs
As evidenced with the form at [1], EWW currently (as of
36634f669f2c) mishandles the case where an HTML form uses
‘method="POST"’ but specifies no ‘action’ attribute. Namely,
instead of interpreting missing ‘action’ as meaning “this very
same URI”, EWW uses the URI with the ‘path’ component discarded.
Granted, missing ‘action’ is special-cased for GET forms:
1034 (if (cdr (assq :action form))
1035 (shr-expand-url (cdr (assq :action form))
1036 eww-current-url)
1037 eww-current-url)
While POST forms get no such treatment:
1030 (eww-browse-url (shr-expand-url (cdr (assq :action form))
1031 eww-current-url)))
However, I believe that the real culprit is shr-expand-url,
which mishandles the nil ‘uri’ case:
(mapcar (lambda (x) (shr-expand-url x "http://example.com/welcome/"))
'("hello" "/world" nil))
;; ⇒
("http://example.com/welcome/hello"
"http://example.com/world"
"http://example.com")
My expectation for the last result would be the ‘base’ argument
unchanged (i. e., http://example.com/welcome/.)
Thus, I suggest changing shr-expand-url to return not the 0th
element of the (parsed) ‘base’ (see below), but the 3rd.
596 (cond ((or (not url)
597 (not base)
598 (string-match "\\`[a-z]*:" url))
599 ;; Absolute URL.
600 (or url (car base)))
[1] https://tools.wmflabs.org/guc/?user=2001:db8:1337::cafe
--
FSF associate member #7257 http://boycottsystemd.org/
This bug report was last modified 10 years and 250 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.