]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/{nolibc,isrlib}: Modify pointer comparison
authorMaria Sfiraiala <maria.sfiraiala@gmail.com>
Mon, 8 May 2023 07:49:43 +0000 (10:49 +0300)
committerUnikraft <monkey@unikraft.io>
Wed, 10 May 2023 13:23:01 +0000 (13:23 +0000)
This commit typecasts `src` and `dst` strings from `memmove()` to ensure
that their values are treated as pointers.

It also modifies the function implementation to handle overlapping.

Co-authored-by: Soumya Ranjan <ranjan42069@gmail.com>
Signed-off-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Signed-off-by: Soumya Ranjan <ranjan42069@gmail.com>
Reviewed-by: Radu Nichita <radunichita99@gmail.com>
Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #880

lib/isrlib/string.c
lib/nolibc/string.c

index d599294506449fbcf729e24b1fcc387ccf5c0b59..a76aaf73288226b0ac95419de9cc2b255c0ccee4 100644 (file)
@@ -110,7 +110,9 @@ void *memmove_isr(void *dst, const void *src, size_t len)
        uint8_t *d = dst;
        const uint8_t *s = src;
 
-       if (src > dst) {
+       if ((intptr_t)src == (intptr_t)dst) {
+               return dst;
+       } else if ((intptr_t)src > (intptr_t)dst) {
                for (; len > 0; --len)
                        *(d++) = *(s++);
        } else {
index eacfbe8c72218eac9058d73b9a5e50f16f4a43d2..50023875fe939178003eaff7e8f820409f2aba34 100644 (file)
@@ -110,7 +110,9 @@ void *memmove(void *dst, const void *src, size_t len)
        uint8_t *d = dst;
        const uint8_t *s = src;
 
-       if (src > dst) {
+       if ((intptr_t)src == (intptr_t)dst) {
+               return dst;
+       } else if ((intptr_t)src > (intptr_t)dst) {
                for (; len > 0; --len)
                        *(d++) = *(s++);
        } else {