summaryrefslogtreecommitdiff
path: root/src/user
diff options
context:
space:
mode:
Diffstat (limited to 'src/user')
-rw-r--r--src/user/app/iostress/iostress.c2
-rw-r--r--src/user/app/shell/shell.c2
-rw-r--r--src/user/app/testelf/main.c4
-rw-r--r--src/user/app/tests/printf.c32
-rw-r--r--src/user/app/tests/tests.c11
-rw-r--r--src/user/app/tests/tests.h4
6 files changed, 40 insertions, 15 deletions
diff --git a/src/user/app/iostress/iostress.c b/src/user/app/iostress/iostress.c
index 843a19a..27e9d33 100644
--- a/src/user/app/iostress/iostress.c
+++ b/src/user/app/iostress/iostress.c
@@ -18,7 +18,7 @@ int main(void) {
}
for (int i = 0; i < NUM_RUNS; i++) {
- printf("run %x: %x\n", i, results[i] / 3000);
+ printf("run %u: %u\n", i, results[i] / 3000);
}
return 0;
diff --git a/src/user/app/shell/shell.c b/src/user/app/shell/shell.c
index 6eb328f..66725a1 100644
--- a/src/user/app/shell/shell.c
+++ b/src/user/app/shell/shell.c
@@ -51,7 +51,7 @@ static void run_args(int argc, char **argv, struct redir *redir) {
uint64_t div = 3000;
run_args(argc - 1, argv + 1, redir);
time = __rdtsc() - time;
- printf("0x%x ns (assuming 3GHz)\n", time / div);
+ printf("%u ns (assuming 3GHz)\n", time / div);
return;
} else if (!strcmp(argv[0], "exit")) {
exit(0);
diff --git a/src/user/app/testelf/main.c b/src/user/app/testelf/main.c
index 5111791..aa1f596 100644
--- a/src/user/app/testelf/main.c
+++ b/src/user/app/testelf/main.c
@@ -5,8 +5,8 @@ const char *str = "Hello!", *str2 = "World.";
int main(int argc, char **argv, char **envp) {
printf("elftest's &main == 0x%x\n", &main);
printf("%s %s\n", str, str2);
- printf("argc == 0x%x\n", argc);
+ printf("argc == %u\n", argc);
for (int i = 0; i < argc; i++)
- printf("argv[0x%x] == 0x%x == \"%s\"\n", i, argv[i], argv[i]);
+ printf("argv[%u] == 0x%x == \"%s\"\n", i, argv[i], argv[i]);
return 0;
}
diff --git a/src/user/app/tests/printf.c b/src/user/app/tests/printf.c
new file mode 100644
index 0000000..6c6c609
--- /dev/null
+++ b/src/user/app/tests/printf.c
@@ -0,0 +1,32 @@
+#define TEST_MACROS
+#include "tests.h"
+#include <stdio.h>
+#include <string.h>
+
+void test_printf(void) {
+ char buf[64];
+ memset(buf, '?', 64);
+
+ /* test proper overflow handling in snprintf */
+ assert(13 == snprintf(buf, 15, "That's 0x%x", 0x1337));
+ assert(!memcmp(buf, "That's 0x1337\0??", 16));
+ assert(17 == snprintf(buf, 15, "%05x %05x %05x", 0, 0, 0));
+ assert(!memcmp(buf, "00000 00000 00\0?", 16));
+
+ /* all the other stuff */
+ snprintf(buf, sizeof buf, "%010x", 0x1BABE);
+ assert(!strcmp(buf, "000001babe"));
+ snprintf(buf, sizeof buf, "%10x", 0x1BABE);
+ assert(!strcmp(buf, " 1babe"));
+ snprintf(buf, sizeof buf, "%10s", "hello");
+ assert(!strcmp(buf, " hello"));
+
+ snprintf(buf, sizeof buf, "%s%%%s", "ab", "cd");
+ assert(!strcmp(buf, "ab%cd"));
+
+ snprintf(buf, sizeof buf, "%05u %05u", 1234, 56789);
+ assert(!strcmp(buf, "01234 56789"));
+
+ snprintf(buf, sizeof buf, "%u %x", 0, 0);
+ assert(!strcmp(buf, "0 0"));
+}
diff --git a/src/user/app/tests/tests.c b/src/user/app/tests/tests.c
index 4390747..f8abc49 100644
--- a/src/user/app/tests/tests.c
+++ b/src/user/app/tests/tests.c
@@ -237,15 +237,6 @@ static void test_execbuf(void) {
test_fail();
}
-static void test_snprintf(void) {
- char buf[16];
- memset(buf, '?', 16);
- assert(13 == snprintf(buf, 15, "That's 0x%x", 0x1337));
- assert(!memcmp(buf, "That's 0x1337\0??", 16));
- assert(17 == snprintf(buf, 15, "%05x %05x %05x", 0, 0, 0));
- assert(!memcmp(buf, "00000 00000 00\0?", 16));
-}
-
static void test_misc(void) {
assert(_syscall(~0, 0, 0, 0, 0, 0) < 0); /* try making an invalid syscall */
}
@@ -263,7 +254,7 @@ int main(void) {
run_forked(test_semaphore);
run_forked(test_efault);
run_forked(test_execbuf);
- run_forked(test_snprintf);
+ run_forked(test_printf);
run_forked(test_misc);
return 1;
}
diff --git a/src/user/app/tests/tests.h b/src/user/app/tests/tests.h
index 39294eb..5f36fe0 100644
--- a/src/user/app/tests/tests.h
+++ b/src/user/app/tests/tests.h
@@ -1,18 +1,20 @@
#pragma once
#include <camellia/syscalls.h>
#include <stdio.h>
+#include <unistd.h>
void stress_all(void);
void test_all(void);
void test_pipe(void);
+void test_printf(void);
void test_semaphore(void);
#ifdef TEST_MACROS
#define argify(str) str, sizeof(str) - 1
#define test_fail() do { \
- printf("\033[31m" "TEST FAILED: %s:%xh\n" "\033[0m", __func__, __LINE__); \
+ printf("\033[31m" "TEST FAILED: %s():%u\n" "\033[0m", __func__, __LINE__); \
exit(0); \
} while (0)
#define assert(cond) if (!(cond)) test_fail();