1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-11-04 08:17:17 -05:00
Commit Graph

732 Commits

Author SHA1 Message Date
Kalle Olavi Niemitalo
13b1d26946 Bug 957: Assert that the ECMAScript interpreter is not running.
Add ecmascript_interpreter.backend_nesting, increment it when
beginning to evaluate an expression, and decrement it when evaluation
finishes.  Then assert that it is zero in ecmascript_put_interpreter.
This detects bug 957 and similar ones before they corrupt memory.

[ Backported from commit 58e3ebf2e7 in
  ELinks 0.12.GIT.  --KON ]
2007-07-02 22:21:33 +03:00
Kalle Olavi Niemitalo
cd855a269c Bug 755: A hack to make SMJS preserve integers as private data.
The previous code cast the integer (long actually) to void * and gave
that to JS_SetPrivate.  This did not work because JS_SetPrivate
expects pointers to be aligned and replaces the least significant bit
with a tag.

[ From attachment 379 of bug 755.  This is less clean than attachment
  380 (aka commit 871a1befad in ELinks
  0.12.GIT) but avoids the need to raise the SpiderMonkey version
  requirement in the ELinks 0.11 stable branch.  --KON ]
2007-07-02 22:17:39 +03:00
Kalle Olavi Niemitalo
c16a37a9ad SMJS: comment changes
[ Backported from commit 9743729cb1 in
  ELinks 0.12.GIT.  --KON ]
2007-07-02 22:17:34 +03:00
Kalle Olavi Niemitalo
59b8eeb7fb SMJS: Use JS_GetInstancePrivate where applicable.
This is a further precaution against reading a pointer from the wrong
type of object.  All of the JS_GetPrivate calls were already protected
with JS_InstanceOf checks if assertions are enabled, and many of them
also if assertions are not enabled.

[ Backported from commit 99f648b911 in
  ELinks 0.12.GIT.  --KON ]
2007-07-02 22:17:29 +03:00
Witold Filipczyk
9bbd795787 bug 755: Fixed.
Remember the index of struct form_state in vs->form_info
instead of the pointer to it. The pointer may change,
the index is persistent.
The field ecmascript_obj of the struct form_state is unused.

[ Backported from commit ecc03ad608 in
  ELinks 0.12.GIT.  --KON ]
2007-07-02 22:17:22 +03:00
witekfl
3faeda97cb Make SpiderMonkey consistent with SEE. Do not cache ecmascript_objs
[ Backported from commit b4d9b7f5a6 in
  ELinks 0.12.GIT, to fix bug 956.  --KON ]
2007-07-02 22:13:55 +03:00
Kalle Olavi Niemitalo
38497c4b37 Compare screen_driver.name with strcmp, not memcmp.
screen_driver_change_hook was comparing only strlen(name) characters
and ignoring the '\0'.  To reproduce the bug in ELinks 0.11.3 and
ELinks 0.12.GIT:

- Run TERM=screen elinks.
- In another terminal, run TERM=scr elinks.  Quit this slave ELinks.
- Open the terminal options dialog and set 16 colors.
- Open the option manager and change the terminal.scr.colors option to
  1 and back to 0.
- Note that ELinks no longer displays colors.

That bug could be fixed just by using len+1 instead of len.  However,
there is also another bug: memcmp may compare the specified number of
bytes, even if some of the earlier ones differ; thus, it could in
principle read past the end of the malloc block and thereby crash
ELinks.  Using strcmp may be a little slower but I do not believe it
could become a bottleneck.

[ Backported from commit f6f5eeceb7 in
  ELinks 0.12.GIT.  --KON ]
2007-06-17 20:10:42 +03:00
Kalle Olavi Niemitalo
b641515fcc Ignore src/ID and src/TAGS.
The former is for GNU id-utils and the latter is for GNU Emacs.
2007-06-17 19:41:14 +03:00
Witold Filipczyk
e96665134a Fix query-part parsing in file: URIs (local CGI).
It was broken in 0.11.2.GIT (a64dd281e9).
Since then, $QUERY_STRING has been empty for <file:///foo/bar?query>.
uri.data is documented as containing both the path and the query.

[ Commit message by me.  --KON ]
2007-06-17 13:40:39 +03:00
Kalle Olavi Niemitalo
6cd6a843d1 Revert 644908c1, "Garbage-collect SMJS objects before flushing caches."
Revert commit 644908c130,
"Garbage-collect SMJS objects before flushing caches."

The extra garbage collections increase the risk of crashing because of
dangling pointers in form_state.ecmascript_obj.  I don't think I'll
have time to properly document the bug and backport the fix before
the 0.11.4 release, so I'm reverting the change instead.
2007-05-30 00:56:01 +03:00
Kalle Olavi Niemitalo
644908c130 Garbage-collect SMJS objects before flushing caches.
[ Backported from commit c33d195ff4 in
  ELinks 0.12.GIT.  --KON ]
2007-05-28 11:14:00 +03:00
Kalle Olavi Niemitalo
b935fbc6ca Bug 461: Ensure contrast when filling with spaces.
So that the cursor will be visible in the Linux console.

[ From commit c2ca46cb81 in ELinks
  0.12.GIT.  --KON ]
2007-05-28 11:08:06 +03:00
Jonas Fonseca
928f364ba2 Check if the program path contains "src/" before using ../po files
Don't look for gettext message catalogs in ../po/ unless ELinks is being
run as src/elinks, ./src/elinks, or .../src/elinks.

Discovered by Arnaud Giersch, this alternate fix (than what is in debian
package 0.11.1-1.4) closes debian bug #417789 and redhat bug #235411.
Also reported in: CVE-2007-2027.

Restricting it to only work with --enable-debug was also considered,
however, it is an important feature for translaters so this less
paranoid fix was chosen.
2007-05-03 12:39:22 +02:00
Kalle Olavi Niemitalo
ba1f7d3b95 Bug 788: Define n_a variables if the POPpx macro of Perl needs them.
The configure script checks whether it is possible to compile a use of
POPpx without an n_a variable; if not, the source code then defines
those variables.  This is slower than including Perl's patchlevel.h
and comparing the version numbers to 5.8.8 but I expect this to be
more reliable as well.

[ Backported from commit 432969a3a9 in
  ELinks 0.12.GIT.  --KON ]
2007-05-02 00:47:11 +03:00
Petr Baudis
aedb588e2b Fix perl pre_format_html hook wrt. binary files
When trying to view a binary file, this hook would cut it at the first
'\0'.

[ From commit 5af21a8d29 in ELinks
  0.12.GIT.  --KON ]
2007-05-02 00:27:58 +03:00
Petr Baudis
6aa6a71c23 Fix compilation of perl hooks
It complains here that n_a might be used uninitialized and POPpx doesn't
set anything like it.

[ From commit 0f8ee055db in ELinks
  0.12.GIT.  --KON ]
2007-05-02 00:27:10 +03:00
Miciah Dashiel Butler Masters
4895620e09 Fix IPv4 DNS lookup bug
In revision 1.15 of dns.c (as it was called way back then), pasky
backported a fix from Links 0.97pre2 to try gethostbyaddr before
trying gethostbyname for DNS lookups:

   MacOS address resolution fix (Aldy Hernandez) (from 0.97pre2)

However, that fix introduced a bug, because it was calling gethostbyaddr
on all addresses, not just IP addresses. Mikulas fixed that bug in Links
0.98:

   Do not call gethostbyaddr when name is not ip address (it should avoid
   some useless nameserver queries)'

This fix was never backported to ELinks. Until today.

This commit is functionally the same as the fix in Links 0.98, plus it uses
inet_aton for great correctness!

This fixes a bug reported in #elinks by tnks, whereby lookups for
yubnub.org resulted in 121.117.98.110 == 0x7975626E == 'y', 'u', 'b', 'n'.
I believe that it also fixes bug 691 (which is already closed with a
workaround).

[ From commit 8344dfe6c9 in ELinks
  0.12.GIT.  --KON ]
2007-05-01 23:56:08 +03:00
Jonas Fonseca
ed29b38a9a Never show empty filename in the what-to-do dialog
This fixes the last comment of bug 396.

[ From commit 58c83a9f48 in ELinks
  0.12.GIT.  --KON ]
2007-05-01 16:19:59 +03:00
Kalle Olavi Niemitalo
14588b9455 Debian bug 380347: Prevent a buffer overflow in entity_cache.
[ From commit 341d54151f in ELinks
  0.12.GIT.  --KON ]
2007-05-01 15:00:57 +03:00
Kalle Olavi Niemitalo
887d650efe Revert 2d6840b9, "Only set the socket protocol family on success."
Revert commit 2d6840b9bd9d3a7a45a5ad92b4e98ff7224d6d97.  It is causing
passive FTP via IPv6 to fail on ftp.funet.fi.  ELinks sends PASV and
the server says "425 You cannot use PASV on IPv6 connections. Use EPSV
instead."

[ Backported from commit c0f488251f in
  ELinks 0.12.GIT.  --KON ]
2007-05-01 14:43:05 +03:00
Kalle Olavi Niemitalo
7e025e6eb5 html_textarea: Use memmove rather than memcpy.
This is an overlapping copy and memcpy is not required to support that.

[ From commit a58345f4e7 in ELinks
  0.12.GIT.  --KON ]
2007-05-01 14:40:37 +03:00
Kalle Olavi Niemitalo
44a4ec5cbc Document the meaning of document_options.cp.
Miciah provided part of the text.

[ From commit 487a047264 in ELinks
  0.12.GIT.  --KON ]
2007-05-01 14:23:05 +03:00
Kalle Olavi Niemitalo
612311ffb4 Bug 947, set_hline: Respect wrap_nbsp also if !part->document.
[ Backported from commit ce05aa1f37 in ELinks
  0.12.GIT.  The earlier commit 0b7a56f89a
  changes the CONFIG_UTF8 variant of set_hline, and that does not exist in
  ELinks 0.11.  --KON ]
2007-05-01 14:14:18 +03:00
Kalle Olavi Niemitalo
a7980fcffc Bugs 879, 928, 947: Specially map U+00A0 and U+00AD in translation tables.
[ Backported from commit da3c8c5ce2 in
  ELinks 0.12.GIT.  --KON ]
2007-05-01 14:09:04 +03:00
Kalle Olavi Niemitalo
dd7a3ad95b Bug 879: New constant UCS_SOFT_HYPHEN; use where applicable.
[ Backported from commit 70dc594d93 in
  ELinks 0.12.GIT.  --KON ]
2007-05-01 14:08:34 +03:00
Kalle Olavi Niemitalo
a04af526ed Bug 947, u2cp_: Use UCS_NO_BREAK_SPACE instead of 0xa0.
[ Backported from commit 9d6c0b13e8 in
  ELinks 0.12.GIT.  --KON ]
2007-05-01 14:05:41 +03:00
Kalle Olavi Niemitalo
806fe16027 Bug 712, ssl_set_no_tls: Disable TLS protocols for GnuTLS too.
And log this in NEWS, although that may have to be reverted later if
it turns out this change just hides a real bug elsewhere in ELinks.

[ Backported from commit 2f25d3e57c in
  ELinks 0.12.GIT.  --KON ]
2007-05-01 12:45:26 +03:00
Simon Josefsson
b1bfa78d1a Use gnutls_set_default_priority.
Thereby enabling TLS 1.2 on GnuTLS versions that support it.

[ From commit 82edb1f892 in ELinks
  0.12.GIT.  --KON ]
2007-05-01 12:44:41 +03:00
Kalle Olavi Niemitalo
711fc8c30a l_pipe_read: Don't leak the old block if mem_realloc fails.
[ From commit 699663614a in ELinks
  0.12.GIT.  --KON ]
2007-05-01 12:44:35 +03:00
Kalle Olavi Niemitalo
ba1cef8db4 Bug 945: Don't crash if the error message is not a string.
[ From commit c645ed7485 in ELinks
  0.11.2.GIT.  --KON ]
2007-05-01 12:25:22 +03:00
Jonas Fonseca
4ddec1e3f2 Fix warning from last patch
[ From commit 0ac97979a2 in ELinks
  0.12.GIT.  Related to bug 396.  --KON ]
2007-04-15 10:21:41 +03:00
Kalle Olavi Niemitalo
71ff470f2e Bug 941: Survive an unexpected number of 227 or 229 FTP responses.
And document the functions a little.

[ From bug 941 attachment 361.  --KON ]
2007-04-12 00:43:43 +03:00
Jonas Fonseca
51572671c9 Fix assertion failure in the charset menu related to special codepages
If the codepage option was set to utf-8 (a special codepage) it would
end up being out of range when used for the initialy selected menu item.

[ From commit a72a0dab08 in ELinks 0.12.GIT.
  ELinks 0.11 doesn't support UTF-8 as the terminal codepage, but the
  System codepage could cause a similar assertion failure.  ELinks 0.11.2
  did not yet have this bug.  --KON ]
2007-04-09 12:19:08 +03:00
Jonas Fonseca
69740ca021 Fix crashes with various bogus BitTorrent URLs
... mainly bittorrent:// and bittorrent://x

The BitTorrent URL is supposed to contain an embedded URL pointing to a
metainfo file. If this is not the case a "custom" error message will be
shown. Also fixes calling of free_list() on an uninitialized list.

Closes bug 729.

[ From commit b61d8d06d9 in ELinks
  0.12.GIT.  This introduces a new string that perhaps won't be
  translated in time for 0.11.3, but I think it's better to display
  an error message in the wrong language than crash.  --KON ]
2007-04-09 10:08:50 +03:00
Laurent MONIN
f835a27e25 Fix crash due to untested null pointer occuring when doing
HTTP_PROXY=8080:proxy.ucv.cl elinks http://wwww.google.cl. Thanks to
Karel Zak.

[ From commit 947c1730a6 in ELinks 0.12.GIT.
  This crash occurs in ELinks 0.11.0 but not in 0.10.6.  --KON ]
2007-04-07 11:15:47 +03:00
Miciah Dashiel Butler Masters
a495814482 Decode the fragment identifier extracted from the URI when looking it up
This fixes a problem with fragment references that was reported
by Thomas Adam.

[ Backported from commit c22f38413e in
  ELinks 0.12.GIT, without changing localizable strings.  --KON ]
2007-04-07 10:51:38 +03:00
Kalle Olavi Niemitalo
b5bbcb2f3a do_auth_dialog: Fix off-by-one error leading to reads of uninitialized memory.
This bug manifested as a junk character at the end of the text in the
authentication dialog.

[ From commit ca496aa2dd in ELinks
  0.12.GIT.  --KON ]
2007-04-06 22:38:46 +03:00
Miciah Dashiel Butler Masters
40f5e23fb0 Secure file saving: restore umask after _all_ failure conditions
The secure file saving code plays some shenanigans with the umask.
Previously, the code could fail to restore the old umask when certain libc
calls failed: malloc, mkstemp, fdopen, and fopen. This resulted in
unrelated code creating files with the wrong umode. Specifically, the
download code's automatic directory creation was creating directories
without the execute permission bit.

Thanks to Quiznos for reporting and helping to track the problem down.

[ Backported from commit 7f0fb0440c in
  ELinks 0.12.GIT.  The general download code in 0.11.2.GIT does not
  automatically create directories but the BitTorrent code does.  --KON ]
2007-04-06 15:18:49 +03:00
Kalle Olavi Niemitalo
1dfdb6e19b Revert 8bedf25b, "goto_url_hook takes 2 params not 1."
Revert 8bedf25bf8.  Different versions
of ELinks call the Python goto_url_hook with different arguments:

- goto_url_hook(current) in 0.11.0, 0.11.1, and 0.11.2.

- goto_url_hook(new, current) in 0.11.2.GIT since 2007-11-27, commit
  8bedf25bf8 which I'm now reverting.
  No released version of ELinks has used this variant.

- goto_url_hook(new) in 0.12.GIT since 2007-01-01, commit
  26473f72f5.  The hook can call
  elinks.current_url() if desired.

I think it will be less confusing to users if we drop the middle
variant and make the rest of the stable 0.11 branch call the hook in
the same way as 0.11.2 did.  The difference will then be only between
the 0.11 and 0.12 branches.
2007-04-06 14:30:00 +03:00
Kalle Olavi Niemitalo
defc67d020 Bug 880: Prevent SIGSEGV in init_python when -no-home is used.
Before this patch, init_python would crash trying to set up the
PYTHONPATH environment variable.  Now it omits the home directory
from the variable in that case.

[ Related to commit 78bd416dc0 in ELinks
  0.12.GIT but quite different internally.  --KON ]
2007-04-05 10:10:32 +03:00
Miciah Dashiel Butler Masters
0fe04536b3 SMJS: fix segfault on exit
Create and immediately destroy a context when initialising the SMJS
document scripting module, because SMJS crashes on exit if there has
been no context created since it started, which is the case if one does
not load any documents.

[ From commit d7a964efaf in ELinks
  0.12.GIT.  --KON ]
2007-04-05 00:16:15 +03:00
Miciah Dashiel Butler Masters
63de05a585 menu_handler: Don't call get_parent_ptr for redraw events
Only call get_parent_ptr for resize events so that the menu isn't moved
to the cursor position for normal redraw events.

Without this change, if ui.leds.enable and ui.clock.enable are 1 and
the user opens the tab menu, it first appears near the tab bar and
almost immediately jumps near the cursor.  With this change, the tab
menu stays near the tab bar.  However, if the user presses Ctrl+L,
then the menu still jumps; but that is less annoying than having it
jump on its own.

[ From commit 1a89589b13 in ELinks
  0.12.GIT.  --KON ]
2007-04-01 22:05:43 +03:00
Kalle Olavi Niemitalo
d0255cf7dd doc: cut-clipboard does not merely delete text from clipboard.
[ From commit 315f4e0342 in ELinks
  0.12.GIT.  This commit adds a string that perhaps won't be
  translated in time for the 0.11.3 release, but I think it is
  better to display a correct description in the wrong language
  than a misleading description in the right language.  --KON ]
2007-04-01 21:22:55 +03:00
Kalle Olavi Niemitalo
7e8020a36f "Do not show anymore" resets ui.success_msgbox, instead of toggling it.
Normally, the success msgbox is shown only if the ui.success_msgbox
option is set as 1, and clicking "Do not show anymore" would then
toggle the option to 0, and no more such msgboxes would appear.
However, if there already are two success msgboxes being displayed
(most likely in different terminals), then clicking "Do not show
anymore" in the first of them would reset the option to 0, but doing
the same in the second of them would toggle the option back to 1.

Rename toggle_success_msgbox to disable_success_msgbox, and make it
always reset the option to 0, regardless of the previous value.

[ From commit 7185e926e6 in ELinks
  0.12.GIT.  This I think does not deserve a NEWS entry.  --KON ]
2007-04-01 21:09:12 +03:00
Kalle Olavi Niemitalo
22d051925e do_move_bookmark: Update comment to match reality. 2007-04-01 14:59:28 +03:00
Laurent MONIN
a3fb7f097c Compilation fix: _GNU_SOURCE has to be defined on GNU platforms to get
strcasestr().

[ From commit 7585eedd2e in ELinks
  0.12.GIT.  --KON ]
2007-04-01 12:14:33 +03:00
Jonas Fonseca
a822daef26 Add support for more graceful detection of HTML content
It will grab at the first fragment of the cache entry and try to detect the
content-type by looking for valid HTML. It is very stupid for now, simply
searching for "<html>", which may be bogus in certain circumstances. And I
am not sure if this is better left out and up to the scripting backends,
e.g. SMJS can now modify the cache entry.

A feable fix for bug 396.

[ From commit 3ea73da7df in ELinks
  0.12.GIT.  --KON ]
2007-04-01 12:10:03 +03:00
Miciah Dashiel Butler Masters
94e153194c MIME: fix crash with empty File extensions menu
Delete the FREE_LIST flag from mi_no_ext so that free_menu_items doesn't
try to free static memory.

This fixes a crash reproducible by deleting every entry under Setup -> File
extensions, opening said menu, and then closing said menu.

[ From commit b41c7d4055 in ELinks
  0.12.GIT.  --KON ]
2007-04-01 12:03:03 +03:00
Miciah Dashiel Butler Masters
cf4bfd6b75 do_move_bookmarks: replace destb and desti parameters with insert_as_child flag
Simplify do_move_bookmarks (from a readability perspective) by replacing
the destb and desti parameters with a new insert_as_child flag. Inspired
by Kalle Olavi Niemitalo.

[ Backported from commit 32ec5d1db3 in
  ELinks 0.12.GIT.  This change is not required for fixing bug 760, but
  the bookmark code in ELinks 0.12.GIT has been tested more with the
  change than without it, so I think applying it is safest.  --KON ]
2007-04-01 11:58:40 +03:00
Miciah Dashiel Butler Masters
f287d5aa31 Bookmarks: Fix update after move
do_move_bookmark was only updating the selection in the bookmarks manager
window in which the Move button was pressed. Now all windows are updated.

This patch also prevents a crash when the first item that was displayed
in a box was the last child of a folder and was being moved (the comment
removed in this patch was incorrect in assuming that bm->box->next must
be valid because it neglected to account for non-root children).

This change required that I move the definition of struct
hierbox_dialog_list_item from src/bfu/hierbox.c to src/bfu/hierbox.h.

Thanks to Kalle Olavi Niemitalo for finding both the update problem
and the crash.

[ Backported from commit 6f98f5fd96 in
  ELinks 0.12.GIT.  --KON ]
2007-04-01 11:49:37 +03:00