| Index | index by Group | index by Distribution | index by Vendor | index by creation date | index by Name | Mirrors | Help | Search |
| Name: blog-devel | Distribution: openSUSE Tumbleweed |
| Version: 2.47 | Vendor: openSUSE |
| Release: 1.2 | Build date: Wed Jul 15 14:29:23 2026 |
| Group: Development/Libraries/C and C++ | Build host: reproducible |
| Size: 657 | Source RPM: blog-2.47-1.2.src.rpm |
| Packager: https://bugs.opensuse.org | |
| Url: https://github.com/bitstreamout/showconsole | |
| Summary: Provides library and header for boot logging | |
The libaray and the header file for the FIFO interface used to build the LSB startproc command.
GPL-2.0-or-later
* Wed Jul 15 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.47
This addresses several race conditions, file descriptor leaks, and
architectural issues regarding virtual terminal (VT) handling in blogd.
* VT Encapsulation: Extracted all kernel-specific terminal ioctls and
macros (e.g., KD_GRAPHICS, KD_TEXT) into a dedicated vt.c module.
Added clean abstractions like vt_is_graphics(), vt_is_text(), and
vt_set_text_mode() to decouple blogd.c and console.c from kernel headers.
* List Management & FD Leaks: Fixed dynamic VT allocation in console.c.
By resetting the console pointer to NULL before consalloc() and
explicitly searching the doubly linked list for the target device ID
afterward, we ensure the exact newly allocated terminal node is referenced.
This fixes incorrect node assignments and prevents file descriptor leaks.
* Smart VT Switching: Optimized the password prompt logic. If the
currently active VT is a text console, the prompt is displayed there
directly without unnecessary context switches. If the active VT is
running a GUI (X11/Wayland), it safely switches to a newly allocated
text VT and returns afterward.
* EBUSY Race Condition: The child process now explicitly closes the
temporary VT file descriptor before initiating the vt_switch back to
the original console. This allows the parent process to safely perform
vt_disallocate without encountering EBUSY kernel errors.
* Timeout Handling: Replaced the infinite wait loop in request_tty()
(tty.c) with a safe 2000ms timeout via can_read(). This prevents the
daemon from hanging indefinitely on locked terminals and allowed the
removal of error-prone alarm() signal hacks.
* Lifecycle Management: Ensured newly allocated dynamic VTs are properly
initialized via consinitIO() and reliably deallocated upon daemon
exit (lcons_shutdown).
Fix epoll EEXIST crash and prevent infinite waits on busy terminals
This also addresses two critical edge cases that could cause the blogd
daemon to either crash or hang during concurrent or blocked prompt requests.
Key changes:
* epoll.c: Prevent an `EEXIST` crash in `epoll_addition()`. If a file
descriptor is already registered in the watch list, the daemon now
gracefully updates it using `EPOLL_CTL_MOD` instead of blindly calling
`EPOLL_CTL_ADD`. This makes the socket handling robust against rapid,
overlapping client requests.
* console.c: Add a 2-second deadline (`alarm(2)`) around the `request_tty()`
call inside the password-prompt child process. Previously, if a terminal
was exclusively locked (e.g. by an X11 server returning EPERM), the child
would fall into an infinite inotify wait-loop. With the timeout, the child
now dies cleanly, allowing the parent's reaping logic to properly cancel
the prompt and send an ANSWER_ENQ (abort) to the waiting client.
* Thu Jul 09 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.46
Implement Plymouth-compatible display-message and hide-message commands
This commit adds support for the display-message and hide-message
Plymouth commands, allowing external tools to print status updates
directly to the boot console via blogctl.
Key changes:
Add MAGIC_SHOW_MSG and MAGIC_HIDE_MSG protocols to blogctl and
parse the --text= argument using getopt_long_only().
Broadcast display-message payloads to all active hardware consoles
via c->out() to ensure immediate visual feedback, while simultaneously
logging it to /var/log/boot.log via copylog().
Add \r\n line endings to printed messages to prevent the staircase
effect on serial terminals operating in raw mode.
Handle hide-message as a visual no-op (replying with an ACK only)
to deliberately avoid ANSI clear-screen sequences that would corrupt
the output on line-based, half-duplex consoles like the s390x 3215.
Update the blogctl.8 manual page to document the new commands and
their specific behavior regarding screen clearing.
Implement Plymouth-compatible ask-for-password and ask-question commands
This commit extends blogctl to act as a lightweight, fully functional
replacement for Plymouth's interactive prompt commands, allowing scripts
to securely ask for passwords or questions on the system console.
Key changes:
Add support for ask-for-password and ask-question in blogctl.
Use getopt_long_only() to robustly parse GNU-style long options
(--prompt, --command, --number-of-tries, --dont-pause-progress).
Offload the retry-loop and command execution (popen) entirely to
the blogctl client, keeping the blogd daemon simple and secure.
Fix an epoll EEXIST crash in console.c by separating the daemon's
process state (asking) from the requested prompt type (ask_mode),
resolving a race condition during socket handler registration.
Comply strictly with the Plymouth protocol: enforce 1-byte prompt
length limits, handle little-endian length headers (le32toh),
and ensure null-terminated payloads via asprintf.
Update the blogctl.8 manual page to document the new commands.
Back to use constructor for initial seed
for the process lifetime and inherited across fork()
Make tty wait logic real and fix SIGHUP/inotify cleanup
Better in-memory reversible obfuscation for cached passwords
This is not cryptographic protection against a memory-reading attacker.
It is only meant to avoid trivial/plaintext exposure in memory.
Fix resource leaks and harden IPC validations
This commit addresses several issues found by static code analysis,
focusing on memory hygiene, file descriptor management, and robust
error handling.
Key changes:
Fix memory and file descriptor leaks in error paths (proc.c, shm.c, tty.c)
and ensure all pending coldstart requests are freed on shutdown.
Harden the systemd ask-password interface by adding boundary checks
for UNIX socket paths, verifying sendto payloads, and gracefully
handling missing directories during early boot without fatal errors.
Improve IPC protocol safety by strictly validating the MAGIC_CHROOT
argument (must be an absolute path) and sending an explicit NACK on failure.
Prevent stale terminal states on s390x by clearing the VMCP cache
prior to parsing a new QUERY TERMINAL reply.
User the --wait option of the blogctl quit command
Add an --wait option specially for quit of blogctl
Fix gh##7
setting blog.silent=true causes it to be non-silent
Make shared library a executable
Refactor daemon to use synchronous signalfd and epoll event loop
This commit migrates the core architecture from traditional, asynchronous
signal handling to a modern, synchronous event loop using signalfd. By
integrating signal handling directly into the epoll multiplexer, we eliminate
race conditions, unexpected EINTR interruptions during I/O operations, and
complex reentrancy issues.
Key changes:
Add setup_signalfd() to block essential signals (SIGINT, SIGQUIT, SIGTERM,
SIGSYS, SIGIO, SIGCHLD) globally and route them through a dedicated file
descriptor monitored by epoll.
Shield epoll_pwait() using a fully populated signal mask (omask) to
guarantee uninterrupted I/O processing.
Prevent socket handlers (MAGIC_SYS_INIT, MAGIC_CLOSE) from accidentally
unblocking signals and resetting dispositions when signalfd is active.
Sanitize the inherited signal mask in forked child processes
(e.g., systemd password prompts on tty) by resetting it to an empty
mask via sigprocmask(), ensuring agents run without restrictions.
Replace the ALIGNED_SIZEOF macro with a cleaner align_up(type, boundary)
macro and fix memset() sizes to correctly zero out trailing padding bytes.
Update the Makefile to compile a stripped-down fallback object
(signals_stripped.o compiled with -DNO_SIGNALFD) to ensure the passive
libblogger.so library remains unaffected by the signalfd architecture.
Some minor changes in quit and umount unit services
The HVC consoles are like sclp console
and can do colours as well
* Mon Jul 06 2026 Dr. Werner Fink <werner@suse.de>
- Silent some rpmlint warnings
* Thu Jul 02 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.45
Fix early boot LUKS prompt on s390x and resolve memory corruptions
This update addresses several critical issues in the early boot phase,
especially on s390x architectures, and hardens the daemon's architecture:
- Initrd/Dracut: Properly include `systemd-ask-password-blog.path` in
sysinit.target.wants during the initrd phase to ensure LUKS password
prompts are captured early in the zipl phase.
- Systemd Units: Drop restrictive `ConditionKernelCommandLine=!plymouth.enable=0`
to prevent the agent from being disabled by standard mainframe boot parameters.
- Memory Corruption: Fix a critical heap corruption by renaming the conflicting
`alignof()` macro to `ALIGNED_SIZEOF()` and zeroing allocated memory for
`struct request` (memset) to prevent reading uninitialized pointers #5.
- Kernel Command Line: Improve `parse_cmdline()` to support boolean parameters
without an explicit value (e.g., `blog.silent` defaults to `blog.silent=1`).
- New Features: Introduce `blog.silent` to suppress console I/O and `blog.coldboot`
to explicitly trigger the early coldstart password query.
- Lifecycle: Switch `KillMode=none` to `KillMode=mixed` to comply with modern
systemd process lifecycle management.
Fixes: gh#bitstreamout/showconsole#5
Fixes: gh#bitstreamout/showconsole#6
Fixes: bsc#1264176
* Tue Jun 30 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.44
Harden blog and use shims units to handle plymouth
Disable coldstart requests via epoll
Avoid handling fd twice in epoll loop
* Mon Jun 29 2026 Dr. Werner Fink <werner@suse.de>
- Correct latest changes of 2.43
* Thu Jun 25 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.43
Make sure that if blog is running it is identified as plymouth Latest
also add conflicts to systemd-ask-password-console units in the
systemd-ask-password-blog units. This should avoid conflicting password
agents asking the same question in s390x.
* Mon Jun 22 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.42
Fix possible memory leaks, eliminate type punning, and resolve I/O blocking
This update implements a series of systemic improvements to stability,
security, and performance:
1. Memory Safety & Leak Resolution:
- Implemented lcons_shutdown destructor to automatically purge the console
list and close FDs on exit.
- Fixed password buffer leak by using in closeIO, correctly matching
the mmap allocation in shm_malloc.
- Added cleanup for pwprompt in closeIO.
2. Elimination of Dangerous Type Punning:
- Replaced the unreliable &cons->node pattern with a type-safe list_t lcons
sentinel across the codebase.
- Added __attribute__((may_alias)) to list_t in listing.h to prevent
compiler strict aliasing optimizations from corrupting list traversals.
3. I/O Responsiveness & Stability:
- Removed tcdrain() from the high-frequency epoll_console_in path to
eliminate daemon freezes during heavy output.
- Updated consinitIO to ensure CON_SERIAL devices remain in O_NONBLOCK
mode, preventing freezes on slow serial lines.
- Extended the tcdrain skip-list in closeIO to include CON_SERIAL, ensuring
a hang-free shutdown.
4. Architectural Improvements:
- Redesigned shm_malloc to use a tiered mapping strategy: prefers
file-backed shared memory in /dev/shm with a graceful fallback
to MAP_ANONYMOUS.
- Optimized listing.h with always_inline attributes, __builtin_prefetch
for cache efficiency, and list poisoning for safer debugging.
* Fri Jun 19 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.41
* The __attribute__((noreturn)) for error() in libconsole.h added
* The variable err with 0 initialized in thread_poll()
* The variable cp.parity with {0} initialized in readpw()
* feat(blogd): handle pending systemd password requests on coldstart
* Initialize console pointer list as well
* Check peer credentials before reading command
* Make isinteger() string check usable for all architectures
* Add some comments about warnings and translation for S390
* Fri Apr 24 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.40
* Protect password data stream on 3270 console as well
On S390 the 3270 console is also logged and the passwords,
even if hidden on the 3270 console, would be logged as well.
* Wed Apr 22 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.39
* New feature to protect passwords to be logged
On S390 now blogd use for 3215 console the command
[#]CP SPOOL CONSOLE STOP
to stop logging the plain password at prompting for the password.
Also a warning is written out to warn the user that the password
will be visible. With getting the password the CONSOLE log is
enabled again if it was enabled before.
* Mon Apr 13 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.38
* Silent debugging messages in epoll algorithm (boo#1261699)
* Make it work on 3215 console of s390
means no tcdrain() for 3215, no blocking writes, not more then
130 characters per line, no \r, finalize lines with \n.
Nevertheless use a blocking read for password requests.
Make automatic CLEAR an kernel command line option with
the parameter blog.timeout=0 (boo#1261697)
* Thu Mar 19 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.37
* Make release.sh active
* Run klogctl with console massages off only once in the
password asking processes on the main console device only
* Clean up white spaces
* This will help on high console I/O as now blogd uses its epoll
event handler to monitor via a file descriptor open with pidfd_open
the password asking child processes (boo#1259547)
* Tue Mar 17 2026 Dr. Werner Fink <werner@suse.de>
- Update to version 2.36
* If SYS_pidfd_open is not defined use a fallback
Include <asm/unistd.h> to get __NR_pidfd_open for
the definition of SYS_pidfd_open.
* Changes to let systemd find plymouth replacements
which means to add the appropiate Alias in systemd-ask-password-blog.path
and also in systemd-ask-password-blog.service with new Install
sections. Also change description in systemd-ask-password-blog.path
to hint for blogd as replacement.
* Rework password asking method to be asynchronous
* Mon Apr 28 2025 Dr. Werner Fink <werner@suse.de>
- Update to version 2.35
* Make s390 3215 console work that is use EPOLLOUT|EPOLLONESHOT
to control if we can write to ttyS0 in nonblocking mode and if
not reenable EPOLLOUT|EPOLLONESHOT.
* At boot set for ttyS0 via vmcp API nonblocking MORE mode with
`0 0'. It beeps but boots.
- Remove patches now upstream
* blog-3215.patch
* blog-install.patch
* Thu Apr 17 2025 Dr. Werner Fink <werner@suse.de>
- Add patch blog-3215.patch
* Try to avoid blocking mode of 3215 console on s390x as holding
the output at `MORE' stops blogd, that is that it can not see
any messages over its socket like switch of the root file system.
* Thu Apr 17 2025 Dr. Werner Fink <werner@suse.de>
- Add patch blog-install.patch
* Fixes install problems
* Use module-setup.sh to install in BUILDROOT
* Wed Apr 16 2025 Dr. Werner Fink <werner@suse.de>
- Update to version 2.34
* Make it work on s390x (still no 3215 console)
This is a bug fix release. But still no support in conmode
3215 as there is a race triggered by using conmode 3215.
The order of the systemd units seems to change with this
console mode.
* Fri Apr 11 2025 Dr. Werner Fink <werner@suse.de>
- Use rpm-config-SUSE instead of suse-module-tools for suse version
above 1550 and add code for the missing macros for older
distributions like leap 15.6
* Thu Apr 10 2025 Dr. Werner Fink <werner@suse.de>
- The suse-module-tools are required at build otherwise blog
is not in the initrd
* Thu Apr 03 2025 Dr. Werner Fink <werner@suse.de>
- Update to version 2.32
* Better 3270 console support, use uevent below /sys file system
* Wed Apr 02 2025 Dr. Werner Fink <werner@suse.de>
- Update to version 2.31
* Handel BS on password prompt as well
* Drop spining code as systemd uses clear to end of line
escape sequence (hard coded!) for its cylon lines.
- blog: again suggest blog-plymouth
* Mon Mar 31 2025 Dr. Werner Fink <werner@suse.de>
- Update to version 2.30
* The asking variable is not shared
* Allow password asking prompt to be repeated if empty.
* Make spinner support UTF-8 multibyte conform.
* Spinner lines of system still not handled.
* Fri Mar 28 2025 Dr. Werner Fink <werner@suse.de>
- Update to version 2.29
* Make sure that password prompt is seen Latest
Use a temporary buffer to be silent during asking passwords.
And stop system console output during password questions
only if temporary buffer becomes short. As well as do coloring
on /dev/ttysclp0 for S390.
- Drop patch.patch as now upstream
* Fri Mar 28 2025 Dr. Werner Fink <werner@suse.de>
- Modify temporary patch patch.patch
* Use a temporary buffer to be silent during asking passwords
* Stop system console output during password questions only
if temporary buffer becomes short
* Thu Mar 27 2025 Dr. Werner Fink <werner@suse.de>
- Add temporary patch named patch.patch
* Stop system console output during password questions
* Do coloring on /dev/ttysclp0
* Wed Mar 12 2025 Dr. Werner Fink <werner@suse.de>
- blog: recommend blog-plymouth instead of only suggesting
* More house advertising to make plymouth support of blogd
more familiar and known by the users
* Wed Nov 29 2023 Dr. Werner Fink <werner@suse.de>
- Update to version 2.28
* UTMP support is gone, remove dependency also add support for
initramfs at shutdown.
* Mon Jul 10 2023 Dr. Werner Fink <werner@suse.de>
- Fix big endian cast problems to be able to read commands
and answers (blogctl) as well as passphrases (blogd)
/usr/include/libblogger.h /usr/lib64/libblogger.so
Generated by rpm2html 1.8.1
Fabrice Bellet, Mon Aug 3 00:14:01 2026