Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.1:Rings:1-MinimalX
systemd
0002-manager-flush-memory-stream-before-using-t...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0002-manager-flush-memory-stream-before-using-the-buffer.patch of Package systemd
From b2cdc6664ef6b56e47d38649d69b9943d9f9f5d0 Mon Sep 17 00:00:00 2001 From: Daniel Mack <zonque@gmail.com> Date: Fri, 7 Mar 2014 14:43:59 +0100 Subject: [PATCH] manager: flush memory stream before using the buffer When the manager receives a SIGUSR2 signal, it opens a memory stream with open_memstream(), uses the returned file handle for logging, and dumps the logged content with log_dump(). However, the char* buffer is only safe to use after the file handle has been flushed with fflush, as the man pages states: When the stream is closed (fclose(3)) or flushed (fflush(3)), the locations pointed to by ptr and sizeloc are updated to contain, respectively, a pointer to the buffer and the current size of the buffer. These values remain valid only as long as the caller performs no further output on the stream. If further output is performed, then the stream must again be flushed before trying to access these variables. Without that call, dump remains NULL and the daemon crashes in log_dump(). --- src/core/manager.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git src/core/manager.c src/core/manager.c index 27a1cc6..78f4f3d 100644 --- src/core/manager.c +++ src/core/manager.c @@ -1621,6 +1621,11 @@ static int manager_dispatch_signal_fd(sd_event_source *source, int fd, uint32_t break; } + if (fflush(f)) { + log_warning("Failed to flush status stream"); + break; + } + log_dump(LOG_INFO, dump); break; } -- 1.7.9.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor