summaryrefslogtreecommitdiffstats
path: root/loader2/init.c
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2005-09-20 15:32:33 +0000
committerChris Lumens <clumens@redhat.com>2005-09-20 15:32:33 +0000
commitc5121a07b37a39d5b2318552d68c38342a56face (patch)
tree605f14fcc48ffc880ff6b0f1b5813439c040840b /loader2/init.c
parentcc01c708e8b2af4bf8aafdabe74c1ced90829d41 (diff)
downloadanaconda-c5121a07b37a39d5b2318552d68c38342a56face.tar.gz
anaconda-c5121a07b37a39d5b2318552d68c38342a56face.tar.xz
anaconda-c5121a07b37a39d5b2318552d68c38342a56face.zip
Don't copy null characters into the log file.
Diffstat (limited to 'loader2/init.c')
-rw-r--r--loader2/init.c34
1 files changed, 27 insertions, 7 deletions
diff --git a/loader2/init.c b/loader2/init.c
index 8fb550c11..2e3a8ae08 100644
--- a/loader2/init.c
+++ b/loader2/init.c
@@ -158,7 +158,7 @@ static void doklog(char * fn) {
socklen_t s;
int sock = -1;
struct sockaddr_un sockaddr;
- char buf[1024];
+ char inbuf[1024], outbuf[1024];
int readfd;
int ret;
@@ -234,24 +234,44 @@ static void doklog(char * fn) {
if (i <= 0) continue;
if (FD_ISSET(in, &readset)) {
- i = read(in, buf, sizeof(buf));
+ i = read(in, inbuf, sizeof(inbuf));
if (i > 0) {
+ int inctr, outctr;
+
+ /* Remove null chars from input buffer. */
+ for (inctr = 0, outctr = 0; inctr < i; inctr++) {
+ if (inbuf[inctr] != '\0') {
+ outbuf[outctr] = inbuf[inctr];
+ outctr++;
+ }
+ }
+
if (out >= 0)
- ret = write(out, buf, i);
- ret = write(log, buf, i);
+ ret = write(out, outbuf, outctr);
+ ret = write(log, outbuf, outctr);
}
}
for (readfd = 0; readfd < 20; ++readfd) {
if (FD_ISSET(readfd, &readset) && FD_ISSET(readfd, &unixs)) {
- i = read(readfd, buf, sizeof(buf));
+ i = read(readfd, inbuf, sizeof(inbuf));
if (i > 0) {
+ int inctr, outctr;
+
+ /* Remove null chars from input buffer. */
+ for (inctr = 0, outctr = 0; inctr < i; inctr++) {
+ if (inbuf[inctr] != '\0') {
+ outbuf[outctr] = inbuf[inctr];
+ outctr++;
+ }
+ }
+
if (out >= 0) {
- ret = write(out, buf, i);
+ ret = write(out, outbuf, outctr);
ret = write(out, "\n", 1);
}
- ret = write(log, buf, i);
+ ret = write(log, outbuf, outctr);
ret = write(log, "\n", 1);
} else if (i == 0) {
/* socket closed */