Changeset 2859 in MondoRescue for branches/2.2.9/mindi-busybox/sysklogd
- Timestamp:
- Jul 26, 2011, 1:25:42 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.9/mindi-busybox/sysklogd/klogd.c
r2725 r2859 151 151 klogd_open(); 152 152 openlog("kernel", 0, LOG_KERN); 153 /* 154 * glibc problem: for some reason, glibc changes LOG_KERN to LOG_USER 155 * above. The logic behind this is that standard 156 * http://pubs.opengroup.org/onlinepubs/9699919799/functions/syslog.html 157 * says the following about openlog and syslog: 158 * "LOG_USER 159 * Messages generated by arbitrary processes. 160 * This is the default facility identifier if none is specified." 161 * 162 * I believe glibc misinterpreted this text as "if openlog's 163 * third parameter is 0 (=LOG_KERN), treat it as LOG_USER". 164 * Whereas it was meant to say "if *syslog* is called with facility 165 * 0 in its 1st parameter without prior call to openlog, then perform 166 * implicit openlog(LOG_USER)". 167 * 168 * As a result of this, eh, feature, standard klogd was forced 169 * to open-code its own openlog and syslog implementation (!). 170 * 171 * Note that prohibiting openlog(LOG_KERN) on libc level does not 172 * add any security: any process can open a socket to "/dev/log" 173 * and write a string "<0>Voila, a LOG_KERN + LOG_EMERG message" 174 * 175 * Google code search tells me there is no widespread use of 176 * openlog("foo", 0, 0), thus fixing glibc won't break userspace. 177 * 178 * The bug against glibc was filed: 179 * bugzilla.redhat.com/show_bug.cgi?id=547000 180 */ 153 181 154 182 if (i) 155 183 klogd_setloglevel(i); 156 184 157 bb_signals(BB_FATAL_SIGS, record_signo);158 185 signal(SIGHUP, SIG_IGN); 186 /* We want klogd_read to not be restarted, thus _norestart: */ 187 bb_signals_recursive_norestart(BB_FATAL_SIGS, record_signo); 159 188 160 189 syslog(LOG_NOTICE, "klogd started: %s", bb_banner);
Note:
See TracChangeset
for help on using the changeset viewer.