1
0
mirror of https://github.com/irssi/irssi.git synced 2024-12-04 14:46:39 -05:00
Commit Graph

5752 Commits

Author SHA1 Message Date
coypu@sdf.org
610ab2dafa Use-after-frees
Hi folks!

I tried clang-static-analyzer on irssi 1.1.1, it seems like it
finds some things. Here's a diff, but there might be more that you would
want to check, or choose to work differently.

(in special-vars.c, ret is commands->data sometime)

I hope it's not too much trouble if reported as a confidential bug.
Thanks.
2018-08-23 14:13:48 +02:00
ailin-nemui
b2a429bfb4 update line cache on switching wcwidth implementation 2018-08-23 14:03:53 +02:00
ailin-nemui
3ef0b9b3d0 move "auto" to default instead 2018-08-23 14:03:16 +02:00
ailin-nemui
b95ce3e812 add julia's utf8proc wcwidth implementation 2018-08-23 13:23:35 +02:00
dequis
24f1ed7edb irc-cap: Don't show warning on CAP LIST response 2018-08-23 03:22:30 -03:00
dequis
0d8632943d Add a wrapper of wcwidth() that picks the best implementation
This adds a i_wcwidth() function that replaces mk_wcwidth(), and a
'wcwidth_implementation' setting to pick which one it wraps.

Values:

- old: uses our local mk_wcwidth() which implements unicode 5.0
- system: uses the libc-provided wcwidth(), which may be better or worse
  than ours depending on how up to date the system is.
- auto: tests the system one against two characters that became
  fullwidth in unicode 5.2 and 9.0 respectively. If either of them pass,
  pick the system implementation, otherwise pick ours.

It defaults to auto.

mk_wcwidth() is still preferable in some cases, since the way it uses
ranges for fullwidth characters means most CJK blocks are covered even
if their characters didn't exist back then.

The "system" implementation is also wrapped to never return -1, but to
assume those unknown characters use one cell. Quoting the code:

    /* Treat all unknown characters as taking one cell. This is
     * the reason mk_wcwidth and other outdated implementations
     * mostly worked with newer unicode, while glibc's wcwidth
     * needs updating to recognize new characters.
     *
     * Instead of relying on that, we keep the behavior of assuming
     * one cell even for glibc's implementation, which is still
     * highly accurate and less of a headache overall.
     */
2018-08-23 02:30:26 -03:00
ailin-nemui
af1e4d6e34 initialise the line to zeros 2018-08-21 09:21:23 +02:00
ailin-nemui
a19b503a31 properly record line info on empty lines 2018-08-21 00:31:12 +02:00
Joseph Bisch
19d84bc16e
Merge pull request #913 from josephbisch/server-fuzz
Add server-fuzz to fe-fuzz
2018-08-15 14:26:43 -04:00
Joseph Bisch
4f5f62ac63 Add server-fuzz to fe-fuzz
Based on test-796.c in the tests directory.
2018-08-15 11:11:09 -04:00
ailin-nemui
22ce54231e
Merge pull request #911 from irssi/revert-897-horgh/topic-unset
Revert "Flag topic as unset if it is zero length"
2018-08-13 14:59:55 +02:00
ailin-nemui
817179a760
Revert "Flag topic as unset if it is zero length" 2018-08-13 14:43:25 +02:00
Lukas Waymann
7d3eb47ab5 Fix potential rename(3) across file systems
Make sure the temporary file in the `config_write` function is created
on the same file system as the file we `rename` it to later.
2018-08-12 10:55:47 +00:00
Lukas Waymann
764f8215a9 Fix /save replacing symlinks with regular files
A side-effect of 8deb618 is that `/save` may replace configuration files
that are symlinks with regular files.  Fix this by resolving all
symlinks before renaming the temporary file.
2018-08-12 07:22:14 +00:00
ailin-nemui
85df01d133
Merge pull request #901 from dwfreed/patch-1
core/ignore: fix #900
2018-08-06 14:36:20 +02:00
David Phillips
10f6326649 Redraw on SIGWINCH when screen size hasn't changed
Some programs and users send SIGWINCH as a request for the client to redraw
in the event of session detachment/reattachment (e.g. abduco). A well-formed
terminal will only send SIGWINCH when the window size has changed, so there
is no need to optimise this case out.
2018-08-06 14:58:56 +12:00
Doug Freed
f3909b8bcb
core/ignore: fix #900 2018-08-03 17:07:06 -04:00
ailin-nemui
0c94d44f52
Merge pull request #892 from dwfreed/fix-ignore-flags
core/ignore: fix ignore_match_level handling of flag levels
2018-08-02 13:42:24 +02:00
ailin-nemui
ffd7ecc8bf
Merge pull request #897 from horgh/horgh/topic-unset
Flag topic as unset if it is zero length
2018-07-31 09:34:15 +02:00
dequis
b114b11e36 channel_change_topic: change one strlen == 0 to *str == '\0' 2018-07-30 23:45:56 -03:00
ailin-nemui
c7e50f48e5
Merge pull request #886 from vague666/set_item_format
remove = from format because people get confused by it
2018-07-25 11:32:06 +02:00
Will Storey
15840ac27b If we receive a 0 length topic, record it as unset
Fixes #888.

Previously we showed that there was a topic set when using /topic, just
an empty one. This was different than how we show such topics when
initially joining a channel. Now we say that the topic is unset in both
cases.
2018-07-24 18:45:22 -07:00
Will Storey
b9e301362d Ignore vim editor files 2018-07-24 18:30:51 -07:00
Will Storey
0e187cf9cf Fix typo in comment 2018-07-24 18:29:31 -07:00
LemonBoy
88f77cb6f8
Merge pull request #895 from janikrabe/master
Keep errstr set to NULL if errno is not set
2018-07-24 09:38:02 +02:00
Janik Rabe
4f45828ff3
Keep errstr set to NULL if errno is not set
Don't use errno if it is not set and show the default error message
instead. This prevents messages like "SSL handshake failed: Success"
from being shown.
2018-07-18 21:12:38 +03:00
Doug Freed
d84a24444f core/ignore: fix ignore_match_level handling of flag levels 2018-06-29 09:00:38 -04:00
ailin-nemui
b382bd1232
Merge pull request #884 from vague666/ignore_hidden
Added HIDDEN level to ignores
2018-06-15 14:28:09 +02:00
vague666
1ab679bf32 remove = from format because people get confused by it 2018-06-14 20:07:43 +02:00
vague666
ba2554dd14 missing space 2018-06-09 05:55:25 +02:00
vague666
d2e1caf720 simplifying code 2018-06-07 15:17:46 +02:00
vague666
1547248e94 simplify code 2018-06-06 11:03:44 +02:00
vague666
ac3af3fb56 these were bitflags 2018-06-06 10:00:38 +02:00
vague666
db3b671328 Added HIDDEN level to ignores 2018-06-05 15:29:40 +02:00
ailin-nemui
daf6ce86cb
Merge pull request #878 from irssi/revert-873-empty_lines
Revert "record line info on empty lines"
2018-05-08 07:17:10 +02:00
ailin-nemui
631650bd8a
Revert "record line info on empty lines" 2018-05-07 21:22:43 +02:00
ailin-nemui
0a0c755b89
Merge pull request #875 from irssi/ailin-nemui-compile-oldtest
Fix test compilation on old glib
2018-04-24 16:21:58 +02:00
ailin-nemui
3075cbc6fb
Fix test compilation on old glib
e.g. Debian 7
2018-04-24 14:00:30 +02:00
ailin-nemui
e19d6ee219
Merge pull request #873 from ailin-nemui/empty_lines
record line info on empty lines
2018-04-24 13:58:25 +02:00
ailin-nemui
0caf884e92
Merge pull request #871 from dequis/atomic-config-write
Make config_write more atomic to prevent truncation when out of space
2018-04-24 13:58:15 +02:00
ailin-nemui
13b2f349b6
Merge pull request #870 from dequis/fe-cap
Add fe-cap to show messages for CAP-related events in the UI
2018-04-24 13:58:04 +02:00
ailin-nemui
34b31e8451 record line info on empty lines 2018-04-16 16:22:04 +02:00
dx
68302f2d1f
Merge pull request #869 from dequis/missing-cap-3-2-signals-doc
signals.txt: add missing 'server cap new|delete' signals
2018-04-11 19:25:25 -03:00
dequis
8deb6182c6 Make config_write more atomic to prevent truncation when out of space
This is modeled after glib's g_file_set_contents. It doesn't use that
function directly because the writing is done with GIOChannel
streaming-like writes and g_file_set_contents expects the whole thing to
be in-memory.

Main differences with g_file_set_contents:

- complete lack of win32 special casing (cygwin/WSL should work though)
- no fallocate() (linux only, but we don't know the size upfront, anyway)
- always calls fsync (glib skips it on btrfs or when not overwriting)

Other than that, it's the same old mkstemp + fsync + rename.
2018-04-08 15:52:09 -03:00
dequis
d0151fd5a2 Add fe-cap to show messages for CAP-related events in the UI
Replaces cap.pl
2018-04-08 01:26:11 -03:00
dequis
af5ee997e7 Add "server cap req" signal, emitted before requesting caps 2018-04-08 01:24:48 -03:00
dequis
8607a5fa78 signals.txt: add missing 'server cap new|delete' signals
Emitted by cap_emit_signal in irc/core/irc-cap.c, added as part of the
CAP 3.2 PR merged recentlyish.
2018-04-07 21:47:38 -03:00
ailin-nemui
b2b1ac6708
Merge pull request #866 from ailin-nemui/reconnects
This is a simple change which might fix #130

The lookup_servers are also disconnected if the lookup/SSL handshake doesn't succeed in time. I'm not perfectly sure if this is the master fix but it does seem to be an issue that servers can be stuck in lookup, especially for SSL. See the issue for a reproducer
2018-04-06 10:50:58 +02:00
ailin-nemui
4d5a750719
Merge pull request #868 from dequis/libgcrypt-m4
Add libgcrypt.m4 so autogen doesn't require libgcrypt-dev
2018-04-03 09:10:16 +02:00
dequis
407680efdc Add libgcrypt.m4 so autogen doesn't require libgcrypt-dev 2018-04-02 12:30:59 -03:00