From: Diego Nieto Cid <[email protected]>
../../boot/userland-boot.c: In function 'boot_script_prompt_task_resume':
../../boot/userland-boot.c:96:3: warning: ignoring return value of 'fgets'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c: In function 'boot_script_exec_cmd':
../../boot/userland-boot.c:267:3: warning: ignoring return value of 'write'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c:271:7: warning: ignoring return value of 'write'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c:273:9: warning: ignoring return value of 'write'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c:274:7: warning: ignoring return value of 'write'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c:276:9: warning: ignoring return value of 'write'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c:278:3: warning: ignoring return value of 'write'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c: In function 'load_image':
../../boot/userland-boot.c:179:7: warning: ignoring return value of 'write'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c:180:7: warning: ignoring return value of 'write'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c:185:3: warning: ignoring return value of 'read'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c:192:7: warning: ignoring return value of 'read'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c:204:13: warning: ignoring return value of 'read'
declared with attribute 'warn_unused_result' [-Wunused-result]
../../boot/userland-boot.c:237:7: warning: ignoring return value of 'read'
declared with attribute 'warn_unused_result' [-Wunused-result]
---
boot/userland-boot.c | 53 ++++++++++++++++++++++++++++++++------------
1 file changed, 39 insertions(+), 14 deletions(-)
diff --git a/boot/userland-boot.c b/boot/userland-boot.c
index 09a9dc26..4bbfbbb6 100644
--- a/boot/userland-boot.c
+++ b/boot/userland-boot.c
@@ -31,6 +31,7 @@
#include <errno.h>
#include <error.h>
#include <link.h>
+#include <assert-backtrace.h>
#include "boot_script.h"
#include "private.h"
@@ -94,10 +95,12 @@ boot_script_task_resume (struct cmd *cmd)
int
boot_script_prompt_task_resume (struct cmd *cmd)
{
- char xx[5];
+ int c;
printf ("Hit return to resume %s...", cmd->path);
- fgets (xx, sizeof xx, stdin);
+ do {
+ c = fgetc (stdin);
+ } while (c != EOF && c != '\n');
return boot_script_task_resume (cmd);
}
@@ -168,6 +171,7 @@ static vm_address_t
load_image (task_t t,
char *file)
{
+ ssize_t err;
int fd;
union
{
@@ -180,20 +184,25 @@ load_image (task_t t,
if (fd == -1)
{
- write (2, file, strlen (file));
- write (2, msg, sizeof msg - 1);
+ size_t len = strlen (file);
+ err = write (2, file, len);
+ assert_backtrace (err == len);
+ err = write (2, msg, sizeof msg - 1);
+ assert_backtrace (err == (sizeof msg - 1));
task_terminate (t);
exit (1);
}
- read (fd, &hdr, sizeof hdr);
+ err = read (fd, &hdr, sizeof hdr);
+ assert_backtrace (err == (sizeof hdr));
/* File must have magic ELF number. */
if (hdr.e.e_ident[0] == 0177 && hdr.e.e_ident[1] == 'E' &&
hdr.e.e_ident[2] == 'L' && hdr.e.e_ident[3] == 'F')
{
ElfW(Phdr) phdrs[hdr.e.e_phnum], *ph;
lseek (fd, hdr.e.e_phoff, SEEK_SET);
- read (fd, phdrs, sizeof phdrs);
+ err = read (fd, phdrs, sizeof phdrs);
+ assert_backtrace (err == (sizeof phdrs));
for (ph = phdrs; ph < &phdrs[sizeof phdrs/sizeof phdrs[0]]; ++ph)
if (ph->p_type == PT_LOAD)
{
@@ -205,7 +214,8 @@ load_image (task_t t,
PROT_READ|PROT_WRITE, MAP_ANON, 0, 0);
lseek (fd, ph->p_offset, SEEK_SET);
- read (fd, (void *)(buf + offs), ph->p_filesz);
+ err = read (fd, (void *)(buf + offs), ph->p_filesz);
+ assert_backtrace (err == (ph->p_filesz));
ph->p_memsz = ((ph->p_vaddr + ph->p_memsz + ph->p_align - 1)
& ~(ph->p_align - 1));
@@ -238,7 +248,8 @@ load_image (task_t t,
rndamount = round_page (amount);
buf = mmap (0, rndamount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0);
lseek (fd, sizeof hdr.a - headercruft, SEEK_SET);
- read (fd, buf, amount);
+ err = read (fd, buf, amount);
+ assert_backtrace (err == amount);
vm_allocate (t, &base, rndamount, 0);
vm_write (t, base, (vm_address_t) buf, rndamount);
if (magic != OMAGIC)
@@ -267,19 +278,33 @@ boot_script_exec_cmd (void *hook,
vm_offset_t stack_start, stack_end;
vm_address_t startpc, str_start;
thread_t thread;
+ ssize_t err;
+ size_t len;
- write (2, path, strlen (path));
+ len = strlen (path);
+ err = write (2, path, len);
+ assert_backtrace (err == len);
for (i = 1; i < argc; ++i)
{
int quote = !! index (argv[i], ' ') || !! index (argv[i], '\t');
- write (2, " ", 1);
+ err = write (2, " ", 1);
+ assert_backtrace (err == 1);
if (quote)
- write (2, "\"", 1);
- write (2, argv[i], strlen (argv[i]));
+ {
+ err = write (2, "\"", 1);
+ assert_backtrace (err == 1);
+ }
+ len = strlen (argv[i]);
+ err = write (2, argv[i], len);
+ assert_backtrace (err == len);
if (quote)
- write (2, "\"", 1);
+ {
+ err = write (2, "\"", 1);
+ assert_backtrace (err == 1);
+ }
}
- write (2, "\r\n", 2);
+ err = write (2, "\r\n", 2);
+ assert_backtrace (err == 2);
startpc = load_image (task, path);
arg_len = stringlen + (argc + 2) * sizeof (char *) + sizeof (intptr_t);
--
2.51.0