diff mbox

[OpenWrt-Devel,v2,libubox] ulog: avoid accidental /dev/kmsg creation

Message ID 1439879319-4950-1-git-send-email-sakib@meta.ua
State Accepted
Headers show

Commit Message

Sergiy Kibrik Aug. 18, 2015, 6:28 a.m. UTC
Race is possible in ulog_kmsg(): if no /dev/kmsg exists
(e.g. while /dev gets re-mounted) regular file created instead.
From this point system goes without kernel logger:
special character file can't be created anymore, all clients keep
overwriting single message in regular file.

To avoid this we open file in "r+" mode which doesn't create
file if it's not found.

Signed-off-by: Sergiy Kibrik <sakib@meta.ua>
Cc: John Crispin <blogic@openwrt.org>
---
 ulog.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox

Patch

diff --git a/ulog.c b/ulog.c
index 776a0c4..80b67ac 100644
--- a/ulog.c
+++ b/ulog.c
@@ -90,7 +90,7 @@  static void ulog_kmsg(int priority, const char *fmt, va_list ap)
 {
 	FILE *kmsg;
 
-	if ((kmsg = fopen("/dev/kmsg", "w")) != NULL) {
+	if ((kmsg = fopen("/dev/kmsg", "r+")) != NULL) {
 		fprintf(kmsg, "<%u>", priority);
 
 		if (_ulog_ident)