summaryrefslogtreecommitdiffstats
path: root/usr.bin/ktrace
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2006-03-14 19:32:03 +0000
committerrwatson <rwatson@FreeBSD.org>2006-03-14 19:32:03 +0000
commit476d18667583679bdf1230213949d32fb7c85943 (patch)
tree0ccbbd29c86267b5ae6eae220b5bf74fe319b429 /usr.bin/ktrace
parent40fd39052074528ac10bac208ac9a7e7f574aef7 (diff)
downloadFreeBSD-src-476d18667583679bdf1230213949d32fb7c85943.zip
FreeBSD-src-476d18667583679bdf1230213949d32fb7c85943.tar.gz
When opening a trace file, open O_NONBLOCK so that ktrace doesn't stall
if the target is a fifo. After opening a trace file, check that it is a regular file, and if not, return an error. MFC after: 3 days Reported by: kris PR: 94278
Diffstat (limited to 'usr.bin/ktrace')
-rw-r--r--usr.bin/ktrace/ktrace.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/usr.bin/ktrace/ktrace.c b/usr.bin/ktrace/ktrace.c
index 4b83796..84f10ee 100644
--- a/usr.bin/ktrace/ktrace.c
+++ b/usr.bin/ktrace/ktrace.c
@@ -145,11 +145,14 @@ main(int argc, char *argv[])
omask = umask(S_IRWXG|S_IRWXO);
if (append) {
- if ((fd = open(tracefile, O_CREAT | O_WRONLY, DEFFILEMODE)) < 0)
+ if ((fd = open(tracefile, O_CREAT | O_WRONLY | O_NONBLOCK,
+ DEFFILEMODE)) < 0)
err(1, "%s", tracefile);
if (fstat(fd, &sb) != 0 || sb.st_uid != getuid())
errx(1, "refuse to append to %s not owned by you",
tracefile);
+ if (!(S_ISREG(sb.st_mode)))
+ errx(1, "%s not regular file", tracefile);
} else {
if (unlink(tracefile) == -1 && errno != ENOENT)
err(1, "unlink %s", tracefile);
OpenPOWER on IntegriCloud