From da334f5a8754e164e53686c9399e797f124ba034 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 9 Mar 2017 15:12:16 +0000
Subject: [PATCH 25/26] wrestool/fileread: Fix check_offset to be const-correct
and use size_t.
Three things were wrong with this function:
(1) Always use size_t when calculating or storing the size of an
object in memory.
(2) The function wasn't const-correct.
(3) The function use arithmetic operations on void* pointers (which is
not defined in C).
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
---
wrestool/fileread.c | 9 +++++----
wrestool/fileread.h | 2 +-
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/wrestool/fileread.c b/wrestool/fileread.c
index 0ec7c49..cb0d7a0 100644
--- a/wrestool/fileread.c
+++ b/wrestool/fileread.c
@@ -33,11 +33,12 @@
* Usually not called directly.
*/
bool
-check_offset(char *memory, int total_size, char *name, void *offset, int size)
+check_offset(const char *memory, size_t total_size,
+ const char *name, const void *offset, size_t size)
{
- char* memory_end = memory + total_size;
- char* block = (char*)offset;
- char* block_end = offset + size;
+ const char* memory_end = memory + total_size;
+ const char* block = (const char*) offset;
+ const char* block_end = block + size;
/*debug("check_offset: size=%x vs %x offset=%x size=%x\n",
need_size, total_size, (char *) offset - memory, size);*/
diff --git a/wrestool/fileread.h b/wrestool/fileread.h
index 1cc7358..45ea543 100644
--- a/wrestool/fileread.h
+++ b/wrestool/fileread.h
@@ -33,6 +33,6 @@
return (r); \
}
-bool check_offset(char *, int, char *, void *, int);
+bool check_offset(const char *, size_t, const char *, const void *, size_t);
#endif
--
2.10.2