9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit b71df54443deaa7d24ba9768d3535cf55f90befd
parent 47366ed71af08ac7f6a96f69762b402501df0d32
Author: Roberto Vargas <roberto.vargas@arm.com>
Date:   Fri,  8 Mar 2019 10:33:02 +0000

[dlang] Fix do_cat()

Using kprint() with a buffer that is not guaranted to be null
terminated is a mistake.

Change-Id: I3c699d6eefd4543fe515ca2f9a8bd7d5a4b40784

Diffstat:
Minclude/libk.h | 1+
Msrc/libk/Makefile | 1+
Asrc/libk/kwrite.c | 11+++++++++++
Msrc/romfw/dlang.c | 2+-
4 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/include/libk.h b/include/libk.h @@ -12,5 +12,6 @@ extern int kgetc(void); extern int kputc(int ch); extern int kputs(const char *s); extern int kvprint(const char *fmt, va_list va); +extern int kwrite(char *buf, int n); extern void kerror(const char *s); extern int putenv(char *name); diff --git a/src/libk/Makefile b/src/libk/Makefile @@ -11,6 +11,7 @@ OBJS = doprnt.o \ kvprint.o \ kgets.o \ kerror.o \ + kwrite.o \ putenv-$(MODE).o \ __assert.o \ diff --git a/src/libk/kwrite.c b/src/libk/kwrite.c @@ -0,0 +1,11 @@ +#include <stdio.h> + +#include <libk.h> + +#include "../libc/syscall.h" + +int +kwrite(char *buf, int n) +{ + return _write(1, buf, n); +} diff --git a/src/romfw/dlang.c b/src/romfw/dlang.c @@ -219,7 +219,7 @@ do_cat(const struct cmd *cmd, struct args *args) goto err; while ((n = read(fd, buf, sizeof(buf))) > 0) - kprint("%s", buf); + kwrite(buf, n); if (close(fd) < 0 || n < 0) goto err;