Commit Graph

893 Commits

Author SHA1 Message Date
Niklas Hambüchen
d53da19a79
slurp_battery_info: Fix reading uninitialised memory (#531)
Fixes valgrind-found bug of the `for (walk = buf, ...` loop
reading all of `buf` even though `buf` is null-terminated string
(an only partly initialised char array).

    valgrind ./i3status -c ../etc/i3status.conf --run-once

    Conditional jump or move depends on uninitialised value(s)
      at 0x40F15A: slurp_battery_info (print_battery_info.c:164)
      by 0x40FA07: slurp_all_batteries (print_battery_info.c:558)
      by 0x40FCA6: print_battery_info (print_battery_info.c:612)
      by 0x409CA2: main (i3status.c:753)
2024-09-09 16:43:25 +02:00
Michael Stapelberg
ccac36f457 release v2.15 2024-08-19 18:28:44 +02:00
Malix
1e36324ef1
Fix: remove "dynamic" TWM (#532)
related to https://github.com/i3/i3.github.io/issues/137
2024-08-05 18:24:26 +02:00
Christoph Gysin
a07d3df3b5 battery: Increase strings maximum size
Allows e.g. putting pango markup inside status strings.

Fixes #516
2024-08-01 15:18:50 +02:00
jspam
200fef9e0d maybe_escape_markup: Don't mangle output if markup is disabled
As it is, the code modifies the first char of `buffer`, increasing it
by the number of bytes written.
2024-05-22 20:13:04 +02:00
Orestis Floros
10397688c9
maybe_escape_markup: Make function memory-safe (#526)
* maybe_escape_markup: Make function memory-safe

This fixes #492 and an additional buffer overflow that can happen when
pango markup is enabled.

Using config
```
general {
        output_format = "none"
        markup = "pango"
}

order += "wireless _first_"

wireless _first_ {
  format_up = "W: (%quality at %essid, %bitrate) %ip"
}
```

and renaming my phone's hotspot to `Hello world &<<<<<<hello world>>`
i3status will throw an AddressSanitizer error:
```
==1373240==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7411d720923e at pc 0x7411daa7cee9 bp 0x7ffdae6ce070 sp 0x7ffdae6cd800
WRITE of size 5 at 0x7411d720923e thread T0
    #0 0x7411daa7cee8 in __interceptor_vsprintf /usr/src/debug/gcc/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1765
    #1 0x7411daa7d0ff in __interceptor_sprintf /usr/src/debug/gcc/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1808
    #2 0x653b2764cdaf in maybe_escape_markup ../src/output.c:102
    #3 0x653b27677df9 in print_wireless_info ../src/print_wireless_info.c:607
    #4 0x653b27640bf1 in main ../i3status.c:709
    #5 0x7411da641ccf  (/usr/lib/libc.so.6+0x25ccf) (BuildId: 6542915cee3354fbcf2b3ac5542201faec43b5c9)
    #6 0x7411da641d89 in __libc_start_main (/usr/lib/libc.so.6+0x25d89) (BuildId: 6542915cee3354fbcf2b3ac5542201faec43b5c9)
    #7 0x653b27633f24 in _start (/tmp/xx/i3status/build/i3status+0x4ff24) (BuildId: c737ce6288265fa02a7617c66f51ddd16b5a8275)

Address 0x7411d720923e is located in stack of thread T0 at offset 574 in frame
    #0 0x653b276750ed in print_wireless_info ../src/print_wireless_info.c:513

  This frame has 10 object(s):
    [48, 56) 'tmp' (line 604)
    [80, 168) 'info' (line 516)
    [208, 320) 'placeholders' (line 623)
    [352, 382) 'string_quality' (line 569)
    [416, 446) 'string_signal' (line 570)
    [480, 510) 'string_noise' (line 571)
    [544, 574) 'string_essid' (line 572) <== Memory access at offset 574 overflows this variable
    [608, 638) 'string_frequency' (line 573)
    [672, 702) 'string_ip' (line 574)
    [736, 766) 'string_bitrate' (line 575)
```

With pango disabled, the error is thrown elsewhere (#492):
```
==1366779==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7bab43a0923e at pc 0x7bab4727cee9 bp 0x7ffc289d2540 sp 0x7ffc289d1cd0
WRITE of size 33 at 0x7bab43a0923e thread T0
    #0 0x7bab4727cee8 in __interceptor_vsprintf /usr/src/debug/gcc/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1765
    #1 0x7bab4727d0ff in __interceptor_sprintf /usr/src/debug/gcc/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1808
    #2 0x5dd180858aa4 in maybe_escape_markup ../src/output.c:93
    #3 0x5dd180883df9 in print_wireless_info ../src/print_wireless_info.c:607
    #4 0x5dd18084cbf1 in main ../i3status.c:709
    #5 0x7bab46843ccf  (/usr/lib/libc.so.6+0x25ccf) (BuildId: 6542915cee3354fbcf2b3ac5542201faec43b5c9)
    #6 0x7bab46843d89 in __libc_start_main (/usr/lib/libc.so.6+0x25d89) (BuildId: 6542915cee3354fbcf2b3ac5542201faec43b5c9)
    #7 0x5dd18083ff24 in _start (/tmp/xx/i3status/build/i3status+0x4ff24) (BuildId: c737ce6288265fa02a7617c66f51ddd16b5a8275)

Address 0x7bab43a0923e is located in stack of thread T0 at offset 574 in frame
    #0 0x5dd1808810ed in print_wireless_info ../src/print_wireless_info.c:513

  This frame has 10 object(s):
    [48, 56) 'tmp' (line 604)
    [80, 168) 'info' (line 516)
    [208, 320) 'placeholders' (line 623)
    [352, 382) 'string_quality' (line 569)
    [416, 446) 'string_signal' (line 570)
    [480, 510) 'string_noise' (line 571)
    [544, 574) 'string_essid' (line 572) <== Memory access at offset 574 overflows this variable
    [608, 638) 'string_frequency' (line 573)
    [672, 702) 'string_ip' (line 574)
    [736, 766) 'string_bitrate' (line 575)
```

With the patch output is correct:
```
W: ( 72% at Hello world &amp;&lt;&lt;&lt;&lt;&lt;&lt;hello world&gt;&gt;, 1,2009 Gb/s) 192.168.26.237
```
and
```
W: ( 73% at Hello world &<<<<<<hello world>>, 1,1342 Gb/s) 192.168.26.237
```

The patch changes the maybe_escape_markup function to use dynamic
allocation instead of a static buffer. Confusing pointer arithmetic is
replaced with index-based memory access. The `buffer` pointer does not
move around except for `realloc`ations.

Fixes #492
Closes #525 (alternative PR)

* Revert to snprintf
2024-05-08 17:51:40 +02:00
наб
c07b9ca5ba man: . at end of sentence 2024-02-04 07:14:50 +01:00
David Lynch
c3a8c7923a
Add newlines to some die() messages 2024-01-28 14:46:10 +01:00
Orestis Floros
6dac8670fa
Merge pull request #486 from erbth/battery_status_idle
Add another battery status called 'idle'
2023-07-28 19:44:45 +02:00
Dettorer
8a918438ed
ipv6: add support for %iface (#327)
In format_up, "%iface" will be replaced by the interface with which the
outgoing IPv6 address is associated
2023-01-07 10:29:53 +01:00
Michael Stapelberg
07ad5aef2d GitHub Actions: update to clang-format 12
clang-format-6.0 is no longer installable
2023-01-07 09:48:49 +01:00
Nils Steinger
d7bb4c9cb8
wireless: correctly display bitrates > 2147483647 bit/s (#503) 2022-10-11 17:51:13 +02:00
erbth
3272abcfbe Add another battery status called 'idle'
On some systems, a battery's charging regulator may not charge a battery
even though it is not full. This might be the case because it was
configured to stop charging at a capacity threshold, or e.g. because
environmental conditions do not allow for charging the battery.

This commit adds this status (called 'idle') and adds support for
detecting the status on Linux.
2022-10-09 23:55:10 +02:00
Michael Stapelberg
30ea2d2da3 fix GitHub Actions setup for branch rename 2022-09-04 12:44:46 +02:00
Michael Stapelberg
d5e1d58ae0 ethernet: print faster speeds in Gbit/s
As a special case, for 2500 Mbit/s, we display “2.5 Gbit/s”.

For other speeds over 1000 Mbit/s, we print “10 Gbit/s”,
“25 Gbit/s” or “100 Gbit/s”.
2022-09-04 12:42:35 +02:00
Michael Stapelberg
c1e9069aa1
fix segfault when a read_file block lacks a path field (#490)
fixes #489
2022-06-12 18:34:28 +02:00
Murray Fordyce
cb516c2df3
Update help information (#485) 2022-06-11 20:24:14 +02:00
nia
6094acde02
NetBSD build fix (#487) 2022-06-11 20:23:31 +02:00
Sepherosa Ziehau
28399bf846 disk_info: BSDs use f_bsize instead of f_frsize. 2021-12-19 22:38:08 +01:00
sepherosa
f757ee415a
cpu_usage: On BSD use long to hold cpu usage to avoid overflow. (#439)
Co-authored-by: Sepherosa Ziehau <sephe@dragonflybsd.org>
2021-12-19 22:31:13 +01:00
Robert Nagy
61a2c42d12
properly print the wireless signal strength on OpenBSD (#473) 2021-12-15 13:33:21 +01:00
Robert Nagy
0843d0c5b2
avoid linking an undefined function, sysfs is linux only (#474) 2021-12-15 13:33:09 +01:00
Robert Nagy
f3b9ad2086
use statvfs(3) on OpenBSD (#472) 2021-12-15 13:29:58 +01:00
Robert Nagy
126fcaef25
add CPU spin support on OpenBSD (#471)
* add CPU spin support on OpenBSD

* use consistent ifdefs
2021-12-15 13:29:32 +01:00
Baptiste Daroussin
db279644c3
Fix freebsd (#464)
* FreeBSD: catchup with the internal changes in code

* FreeBSD: use statvfs instead on statfs

Follow NetBSD here while here, catch up with code architecture changes
2021-11-25 08:55:33 +01:00
Baptiste Daroussin
262327a795
meson: replace bashism is POSIX shell compliant code (#463) 2021-11-25 08:54:38 +01:00
Michael Stapelberg
8fc0f6e531 release v2.14 2021-11-09 08:26:49 +01:00
Michael Stapelberg
73c6eb2d4c use param structs everywhere for consistency 2021-11-02 21:45:31 +01:00
Michael Stapelberg
6f348e612b cpu_temperature: fix colors (+param struct) 2021-11-02 21:33:08 +01:00
Michael Stapelberg
e57f14ffa1 memory: fix colors (+param struct) 2021-11-02 21:30:22 +01:00
Michael Stapelberg
9db19ffa35 load: fix colors (+param struct) 2021-11-02 21:25:15 +01:00
Michael Stapelberg
6b2f4cd20c cpup_usage: param struct 2021-11-02 21:20:26 +01:00
Michael Stapelberg
9a6f96b309 disk: fix colors (+param struct) 2021-11-02 21:16:25 +01:00
Michael Stapelberg
ffedf14066 volume: fix colors (+param struct) 2021-11-02 21:11:06 +01:00
Michael Stapelberg
b20491cb6b path_exists: fix colors (+param struct) 2021-11-02 21:05:52 +01:00
Michael Stapelberg
7d613fbe95 run_watch: fix colors (+param struct) 2021-11-02 20:53:06 +01:00
Michael Stapelberg
4722198875 wireless: fix colors (+param struct) 2021-11-02 20:48:58 +01:00
Michael Stapelberg
9d9a6e8072 battery: fix colors (+param struct) 2021-11-02 20:48:50 +01:00
Michael Stapelberg
5760a1d53f eth: fix colors (+param struct) 2021-11-02 20:29:00 +01:00
Michael Stapelberg
48d817a653 ipv6: fix colors (+ param struct) 2021-11-02 20:23:42 +01:00
Michael Stapelberg
11d5c9863e print_file_contents: define parameter struct, use strncpy()
The list of parameters was getting too lengthy.
2021-11-02 19:40:40 +01:00
Michael Stapelberg
8598a76681 print_file_contents: fix colors
Commit
f0b5758c72
broke the END_COLOR macro because the outwalk variable was not updated.
2021-11-01 09:41:17 +01:00
Michael Stapelberg
6102cdc0b7 correctly get battery sections (fixes a warning) 2021-11-01 09:20:20 +01:00
Michael Stapelberg
9e9d010226 update README for meson
related to https://github.com/i3/i3status/issues/459
2021-10-31 19:24:10 +01:00
Michael Stapelberg
90dd6b061d meson: set HAS_PULSEAUDIO for i3status --version output
related to https://github.com/i3/i3status/issues/459
2021-10-31 19:23:38 +01:00
Michael Stapelberg
c8e1c19f56 Switch build system from autotools to meson
fixes https://github.com/i3/i3status/issues/459
fixes https://github.com/i3/i3status/issues/339
fixes https://github.com/i3/i3status/issues/353
2021-10-31 19:03:02 +01:00
Michael Stapelberg
52f6db0788 use __linux__ def for detecting Linux
see https://sourceforge.net/p/predef/wiki/OperatingSystems/

This is a prerequisite for switching to Meson:
related to https://github.com/i3/i3status/issues/459
2021-10-31 18:50:14 +01:00
Michael Stapelberg
d6f0850353 switch from travis to GitHub actions 2021-10-31 18:39:04 +01:00
Orestis Floros
cabb01fd46
Merge pull request #450 from devkev/full_version
Fix version reporting in -h and -v.
2021-08-28 10:02:35 +02:00
Orestis Floros
aa2eb1975c
Merge pull request #455 from juhopp/fix_man_page_typo
Fix typo in man page
2021-08-28 10:00:49 +02:00