Commit graph

51 commits

Author SHA1 Message Date
Ailin Nemui
8eee36d1ea replace str->str & g_string_free with g_string_free_and_steal
solving unused warning in GLib 2.76
2025-07-22 12:03:49 +02:00
ailin-nemui
6b93d6e338 implement expando cache
- the expando values need to be stored now that the lines are
  reformattable, otherwise the old values are lost (and they depend on
  context only available at the time the line is initially printed)

- the cache is collected from the special-vars evaluation code

- the cache is controlled by the textbuffer-formats code, and stored in
  the text_buffer_format_rec
2020-04-26 20:42:02 +02:00
ailin-nemui
887950db0f limit special-vars alignment memory to not exhaust fuzzer 2019-08-30 20:30:02 +02:00
ailin-nemui
7e6e1f2e10 Use full paths to includes 2019-05-01 22:08:45 +02:00
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
e289d34b9a limit alignment padding to a screenful
Credit to Oss-Fuzz
2018-02-14 15:04:24 +01:00
ailin-nemui
a6fcd5432e improve padding performance
Credit to Oss-Fuzz
2018-02-13 12:31:22 +01:00
ailin-nemui
cc17837a9b disable variable arguments code 2018-01-03 15:51:51 +01:00
dequis
632b0ce5e6 Add parse_uint function to improve integer overflow handling
Originally found by oss-fuzz (issue 525) in get_ansi_color using ubsan.
After a lot of analysis I'm 99% sure this isn't security relevant so
it's fine to handle this publicly.

The fix is mainly adding a function that does it right and use it
everywhere. This is harder than it seems because the strtol() family of
functions doesn't have the friendliest of interfaces.

Aside from get_ansi_color(), there were other pieces of code that used
the same (out*10+(*in-'0')) pattern, like the parse_size() and
parse_time_interval() functions, which are mostly used for settings.
Those are interesting cases, since they multiply the parsed number
(resulting in more overflows) and they write to a signed integer
parameter (which can accidentally make the uints negative without UB)

Thanks to Pascal Cuoq for enlightening me about the undefined behavior
of parse_size (and, in particular, the implementation-defined behavior
of one of the WIP versions of this commit, where something like signed
integer overflow happened, but it was legal). Also for writing
tis-interpreter, which is better than ubsan to verify these things.
2017-05-18 00:21:11 -03:00
LemonBoy
7a3c6fe86c Replace strarray_length with g_strv_length 2016-06-05 16:24:55 +02:00
Xavier G
f1b5b515b9 Make get_alignment() available outside special-vars.c 2016-05-13 03:51:48 +02:00
Xavier G
97a4ee78fd get_alignment: handle UTF-8 strings.
get_alignment now works with columns (width), not bytes, although it is liable
to work with bytes if the given text is not a valid UTF-8 string.
2016-05-13 03:42:56 +02:00
Xavier G
09ca3ad48f Fix indentation of display_sorted_nicks().
This was done assuming an "indent with tab, align with spaces" approach.
get_alignment also benefited from a minor indentation fix.
2016-05-13 03:31:23 +02:00
Alexander Færøy
daf6adc0b0 Remove warnings about uninitialized variables.
git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@5140 dbcabf3a-b0e7-0310-adc4-f8d773084564
2010-04-04 12:19:54 +00:00
Emanuele Giaquinta
ffe5bd6930 Remove trailing whitespace.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4705 dbcabf3a-b0e7-0310-adc4-f8d773084564
2008-02-04 15:30:38 +00:00
Emanuele Giaquinta
c235c679cc Remove code duplication.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4493 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-05-14 21:22:41 +00:00
Wouter Coekaerts
9c2d621cc6 Oops. Update address correctly now.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4490 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-05-08 18:41:10 +00:00
Wouter Coekaerts
023026e12b Update FSF address
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@4489 dbcabf3a-b0e7-0310-adc4-f8d773084564
2007-05-08 18:16:58 +00:00
Timo Sirainen
71442509d0 Fixed some "buffer overflow" alerts when playing with buggy /EVAL values.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2984 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-11-05 13:10:58 +00:00
Timo Sirainen
d58e119a98 Exported expando interface to perl. Fix for statusbar deinit.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2975 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-10-27 22:30:41 +00:00
Timo Sirainen
bd00ff54c2 Fixed one error and several warnings with GLIB 2.0
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2663 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-04-10 02:53:06 +00:00
Timo Sirainen
490e411814 Don't crash if special vars line ends with '$'.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2488 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-02-17 09:37:23 +00:00
Timo Sirainen
82b0c081e2 Server referencing in /EVAL really should have checked if the server wasn't
NULL :)


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2387 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-02-03 23:14:22 +00:00
Timo Sirainen
6ea882f893 Added missing #include
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2382 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-02-03 19:24:51 +00:00
Timo Sirainen
e8957938ea A bit more safer now to use /EVAL with a command that disconnects from
server.. Also added a FIXME: window item would need reference counting as
well, eg. "/EVAL win close;say hello" wouldn't work now.. But that's probably
job for the rewrite irssi. don't go use things like that :)


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2381 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-02-03 18:32:46 +00:00
Timo Sirainen
f4897860b5 toupper(), tolower(), isspace(), is..etc..() aren't safe with chars in some
systems, use our own is_...() functions now instead.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2348 dbcabf3a-b0e7-0310-adc4-f8d773084564
2002-01-27 20:45:59 +00:00
Timo Sirainen
5dfe5f8a5d $!xx! history search didn't work because history_func() got also the
trailing '!' character.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2213 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-12-07 19:45:47 +00:00
Timo Sirainen
879702897b eval_special_string() : spaces are now ignored after ';' separator (so
/alias echo foo; echo bar works properly). Also if there was any empty
commands they're now ignored.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2105 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-11-19 22:44:04 +00:00
Timo Sirainen
55137fa30d get_argument() - allow arglist to be NULL, just assume that there's no
arguments then.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2083 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-11-19 14:17:16 +00:00
Timo Sirainen
905a5127f4 if \x isn't a known escape sequence, it should print just x, not \x.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1887 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-10-21 18:58:09 +00:00
Timo Sirainen
476b5ec863 $~ crashed if arglist was empty
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1858 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-10-20 11:30:24 +00:00
Timo Sirainen
26d84e25ab added expando_get_signals() and special_vars_get_signals() to return list
of signals the expandos use. Also added "time changed" signal which gets
emitted when $Z changes.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1814 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-09-23 17:32:05 +00:00
Timo Sirainen
82ce76100c s/PARAM_FLAGS_ONLY_PARAMS/PARAM_FLAG_ONLY_ARGS/ since they're called
arguments everywhere :)


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1804 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-09-20 16:44:22 +00:00
Timo Sirainen
1b42f89ccb $*, $~ and $-n should still work with PARAM_FLAG_ONLY_PARAMS.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1803 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-09-20 16:43:24 +00:00
Timo Sirainen
7814192f03 special vars: added PARSE_FLAG_ONLY_PARAMS. Theme loading now uses it so
you can use $C etc. in themes to print the active channel. printformat()
also expands it now correctly to the server/target where the message was
printed, not to the active window's server/target.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1802 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-09-20 15:58:14 +00:00
Timo Sirainen
98b82723a1 Added function expand_escapes() which handles now escaping /EVAL and input
line if /SET expand_escapes is set. Supported escapes are \t, \r, \n, \e
(ESC), \x (HEX, \x1b), \c (CTRL char, \cA), \000 (octal, \033)


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1727 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-08-08 20:00:25 +00:00
Timo Sirainen
8b733e0568 special-vars: added flag PARSE_FLAG_ESCAPE_THEME to escape { and } chars
with % char. Used this with statusbar items - now for example "{error xxx}"
topic won't print it with error color.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1564 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-06-26 15:33:07 +00:00
Timo Sirainen
d4558de232 /SET prompt - if target had %c or something in it, it shouldn't be
treated as color code. So color codes can now be used in /SET prompt
string itself, but in none of the $variables it uses.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1324 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-03-03 21:34:06 +00:00
Timo Sirainen
1698500f80 $[.10]var truncates the var to 10 chars, but doesn't pad if var is
shorter than 10 chars


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1105 dbcabf3a-b0e7-0310-adc4-f8d773084564
2001-01-12 17:05:05 +00:00
Timo Sirainen
bbc33bff5e /SET prompt, /SET prompt_window - Specifies the text in prompt.
'prompt' is used when channel or query is active in window and
'prompt_window' is used with empty windows.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@1005 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-12-17 07:39:22 +00:00
Timo Sirainen
210409bc0b '_' character wasn't treated as acceptable $variable_name character.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@986 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-12-10 05:11:36 +00:00
Timo Sirainen
d1eaeca255 Split expandos from special-vars.c to expandos.c. Added list of signals
to each expando that can might change it's value.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@964 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-12-05 00:53:04 +00:00
Timo Sirainen
a01275959d cmd_options_get_server() : allow NULL cmd argument
eval_special_string() : if any of the commands separated with ; used
the arguments ($0, $1, etc.) don't anymore append all the arguments
after other commands.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@903 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-11-30 22:58:45 +00:00
Timo Sirainen
df10f182c0 Some fixes for compiling with Win32 :)
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@783 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-10-26 18:12:20 +00:00
Timo Sirainen
e395e87ded Lots of moving stuff around - hopefully I didn't break too much :)
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@632 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-08-26 15:39:44 +00:00
Timo Sirainen
aec85e1dbd uname() return value checking fixes.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@508 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-07-22 19:14:57 +00:00
Timo Sirainen
c2397475c5 Cleaned up code.
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@480 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-07-16 20:18:05 +00:00
Timo Sirainen
919abb2c6f /EVAL will now expand \n and \t to newline and tab.
If you /SET expand_escapes ON and type \n or \t to text line, they
will be expanded.


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@326 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-06-11 22:58:17 +00:00
Timo Sirainen
2440a5b0b6 Unline glib.h tells, g_getenv() doesn't return newly allocated string
after all..


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@239 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-05-25 13:54:43 +00:00
Timo Sirainen
93d6032151 - Compiling fixes
- GNOME version isn't anymore build here so you don't need all that GTK and
GNOME crap to compile irssi-text.
- Some fixes to compile with -ansi -pedantic


git-svn-id: http://svn.irssi.org/repos/irssi/trunk@200 dbcabf3a-b0e7-0310-adc4-f8d773084564
2000-05-09 11:42:42 +00:00