diff options
author | Ian Moffett <ian@osmora.org> | 2024-03-20 22:57:26 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2024-03-20 22:57:26 -0400 |
commit | 83295ee74070aad3973cdcd8e57d85ad44efc3ce (patch) | |
tree | c260b6c4051fd4498b57fe6d1bdb0906cf3d6b99 | |
parent | 197bdf24748b03eff9710998b9023376a40971e7 (diff) |
kernel: Require len in vcons_putstr()
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r-- | sys/dev/vcons/vcons.c | 6 | ||||
-rw-r--r-- | sys/include/dev/vcons/vcons.h | 2 | ||||
-rw-r--r-- | sys/kern/kern_filedesc.c | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/sys/dev/vcons/vcons.c b/sys/dev/vcons/vcons.c index cba0b85..15e97e4 100644 --- a/sys/dev/vcons/vcons.c +++ b/sys/dev/vcons/vcons.c @@ -203,12 +203,12 @@ vcons_putch(struct vcons_screen *scr, char c) * @s: String to write. */ int -vcons_putstr(struct vcons_screen *scr, const char *s) +vcons_putstr(struct vcons_screen *scr, const char *s, size_t len) { int status; - while (*s != '\0') { - if ((status = vcons_putch(scr, *(s++))) != 0) { + for (size_t i = 0; i < len; ++i) { + if ((status = vcons_putch(scr, s[i])) != 0) { return status; } } diff --git a/sys/include/dev/vcons/vcons.h b/sys/include/dev/vcons/vcons.h index 9deb656..801075a 100644 --- a/sys/include/dev/vcons/vcons.h +++ b/sys/include/dev/vcons/vcons.h @@ -67,7 +67,7 @@ struct vcons_screen { void vcons_attach(struct vcons_screen *scr); int vcons_putch(struct vcons_screen *scr, char c); -int vcons_putstr(struct vcons_screen *scr, const char *s); +int vcons_putstr(struct vcons_screen *scr, const char *s, size_t len); void vcons_update_cursor(struct vcons_screen *scr); #endif /* !_DEV_VCONS_H_ */ diff --git a/sys/kern/kern_filedesc.c b/sys/kern/kern_filedesc.c index fc3d5ef..dea5a43 100644 --- a/sys/kern/kern_filedesc.c +++ b/sys/kern/kern_filedesc.c @@ -217,7 +217,7 @@ write(int fd, const void *buf, size_t count) /* Is this stdout/stderr? */ if (fd == 1 || fd == 2) { /* TODO: Update this when we have PTYs */ - vcons_putstr(&g_syslog_screen, in_buf); + vcons_putstr(&g_syslog_screen, in_buf, count); return count; } |