|
@@ -135,11 +135,10 @@ static void __init test_hexdump_set(int rowsize, bool ascii)
|
|
|
|
|
|
static void __init test_hexdump_overflow(size_t buflen, bool ascii)
|
|
|
{
|
|
|
+ char test[TEST_HEXDUMP_BUF_SIZE];
|
|
|
char buf[TEST_HEXDUMP_BUF_SIZE];
|
|
|
- const char *t = test_data_1_le[0];
|
|
|
- size_t len = 1;
|
|
|
- int rs = 16, gs = 1;
|
|
|
- int ae, he, e, r;
|
|
|
+ int rs = rowsize, gs = groupsize;
|
|
|
+ int ae, he, e, f, r;
|
|
|
bool a;
|
|
|
|
|
|
memset(buf, FILL_CHAR, sizeof(buf));
|
|
@@ -157,26 +156,23 @@ static void __init test_hexdump_overflow(size_t buflen, bool ascii)
|
|
|
e = ae;
|
|
|
else
|
|
|
e = he;
|
|
|
- buf[e + 2] = '\0';
|
|
|
-
|
|
|
- if (!buflen) {
|
|
|
- a = r == e && buf[0] == FILL_CHAR;
|
|
|
- } else if (buflen < 3) {
|
|
|
- a = r == e && buf[0] == '\0';
|
|
|
- } else if (buflen < 4) {
|
|
|
- a = r == e && !strcmp(buf, t);
|
|
|
- } else if (ascii) {
|
|
|
- if (buflen < 51)
|
|
|
- a = r == e && buf[buflen - 1] == '\0' && buf[buflen - 2] == FILL_CHAR;
|
|
|
- else
|
|
|
- a = r == e && buf[50] == '\0' && buf[49] == '.';
|
|
|
- } else {
|
|
|
- a = r == e && buf[e] == '\0';
|
|
|
+
|
|
|
+ f = min_t(int, e + 1, buflen);
|
|
|
+ if (buflen) {
|
|
|
+ test_hexdump_prepare_test(len, rs, gs, test, sizeof(test), ascii);
|
|
|
+ test[f - 1] = '\0';
|
|
|
}
|
|
|
+ memset(test + f, FILL_CHAR, sizeof(test) - f);
|
|
|
+
|
|
|
+ a = r == e && !memcmp(test, buf, TEST_HEXDUMP_BUF_SIZE);
|
|
|
+
|
|
|
+ buf[sizeof(buf) - 1] = '\0';
|
|
|
|
|
|
if (!a) {
|
|
|
- pr_err("Len: %zu rc: %u strlen: %zu\n", buflen, r, strlen(buf));
|
|
|
- pr_err("Result: '%s'\n", buf);
|
|
|
+ pr_err("Len: %zu buflen: %zu strlen: %zu\n",
|
|
|
+ len, buflen, strnlen(buf, sizeof(buf)));
|
|
|
+ pr_err("Result: %d '%s'\n", r, buf);
|
|
|
+ pr_err("Expect: %d '%s'\n", e, test);
|
|
|
}
|
|
|
}
|
|
|
|