Browse Source

ulog: avoid accidental /dev/kmsg creation

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>
Sergiy Kibrik 8 years ago
parent
commit
136a519626
1 changed files with 1 additions and 1 deletions
  1. 1 1
      ulog.c

+ 1 - 1
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)