summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Morman <jmorman@perspectalabs.com>2021-03-24 17:40:36 -0400
committerMarcus Müller <marcus@hostalia.de>2021-03-25 13:32:11 +0100
commit01de47a2dc75f7f0ce3e8077084c85182601e35f (patch)
tree8ae611c9034560b88cb019517a71f11729753c00
parent818c24ad607a544a12400744fc965d1e78f7b3b1 (diff)
runtime: buffer factories use size_t
Addresses the issue where large buffer size requests get converted back and forth to signed/unsigned and can cause an overflow and the buffer allocation to fail Signed-off-by: Josh Morman <jmorman@perspectalabs.com>
-rw-r--r--gnuradio-runtime/lib/vmcircbuf.h4
-rw-r--r--gnuradio-runtime/lib/vmcircbuf_createfilemapping.cc5
-rw-r--r--gnuradio-runtime/lib/vmcircbuf_createfilemapping.h4
-rw-r--r--gnuradio-runtime/lib/vmcircbuf_mmap_shm_open.cc4
-rw-r--r--gnuradio-runtime/lib/vmcircbuf_mmap_shm_open.h4
-rw-r--r--gnuradio-runtime/lib/vmcircbuf_mmap_tmpfile.cc4
-rw-r--r--gnuradio-runtime/lib/vmcircbuf_mmap_tmpfile.h4
-rw-r--r--gnuradio-runtime/lib/vmcircbuf_sysv_shm.cc4
-rw-r--r--gnuradio-runtime/lib/vmcircbuf_sysv_shm.h4
9 files changed, 19 insertions, 18 deletions
diff --git a/gnuradio-runtime/lib/vmcircbuf.h b/gnuradio-runtime/lib/vmcircbuf.h
index 192f9b32bd..75fca25567 100644
--- a/gnuradio-runtime/lib/vmcircbuf.h
+++ b/gnuradio-runtime/lib/vmcircbuf.h
@@ -72,7 +72,7 @@ public:
*
* Call this to create a doubly mapped circular buffer.
*/
- virtual vmcircbuf* make(int size) = 0;
+ virtual vmcircbuf* make(size_t size) = 0;
};
/*
@@ -90,7 +90,7 @@ public:
static vmcircbuf_factory* get_default_factory();
static int granularity() { return get_default_factory()->granularity(); }
- static vmcircbuf* make(int size) { return get_default_factory()->make(size); }
+ static vmcircbuf* make(size_t size) { return get_default_factory()->make(size); }
// N.B. not all factories are guaranteed to work.
// It's too hard to check everything at config time, so we check at runtime
diff --git a/gnuradio-runtime/lib/vmcircbuf_createfilemapping.cc b/gnuradio-runtime/lib/vmcircbuf_createfilemapping.cc
index 463f0a3bb6..08be14987a 100644
--- a/gnuradio-runtime/lib/vmcircbuf_createfilemapping.cc
+++ b/gnuradio-runtime/lib/vmcircbuf_createfilemapping.cc
@@ -49,7 +49,8 @@ static void werror(char* where, DWORD last_error)
#endif
-vmcircbuf_createfilemapping::vmcircbuf_createfilemapping(int size) : gr::vmcircbuf(size)
+vmcircbuf_createfilemapping::vmcircbuf_createfilemapping(size_t size)
+ : gr::vmcircbuf(size)
{
gr::configure_default_loggers(
d_logger, d_debug_logger, "vmcircbuf_createfilemapping");
@@ -195,7 +196,7 @@ int vmcircbuf_createfilemapping_factory::granularity()
#endif
}
-gr::vmcircbuf* vmcircbuf_createfilemapping_factory::make(int size)
+gr::vmcircbuf* vmcircbuf_createfilemapping_factory::make(size_t size)
{
try {
return new vmcircbuf_createfilemapping(size);
diff --git a/gnuradio-runtime/lib/vmcircbuf_createfilemapping.h b/gnuradio-runtime/lib/vmcircbuf_createfilemapping.h
index fb40937d4e..9aa64b2eee 100644
--- a/gnuradio-runtime/lib/vmcircbuf_createfilemapping.h
+++ b/gnuradio-runtime/lib/vmcircbuf_createfilemapping.h
@@ -28,7 +28,7 @@ class GR_RUNTIME_API vmcircbuf_createfilemapping : public gr::vmcircbuf
{
public:
// CREATORS
- vmcircbuf_createfilemapping(int size);
+ vmcircbuf_createfilemapping(size_t size);
~vmcircbuf_createfilemapping() override;
#ifdef HAVE_CREATEFILEMAPPING
private:
@@ -64,7 +64,7 @@ public:
*
* Call this to create a doubly mapped circular buffer.
*/
- gr::vmcircbuf* make(int size) override;
+ gr::vmcircbuf* make(size_t size) override;
};
} /* namespace gr */
diff --git a/gnuradio-runtime/lib/vmcircbuf_mmap_shm_open.cc b/gnuradio-runtime/lib/vmcircbuf_mmap_shm_open.cc
index 87699ee0f8..0741b0663e 100644
--- a/gnuradio-runtime/lib/vmcircbuf_mmap_shm_open.cc
+++ b/gnuradio-runtime/lib/vmcircbuf_mmap_shm_open.cc
@@ -30,7 +30,7 @@
namespace gr {
-vmcircbuf_mmap_shm_open::vmcircbuf_mmap_shm_open(int size) : gr::vmcircbuf(size)
+vmcircbuf_mmap_shm_open::vmcircbuf_mmap_shm_open(size_t size) : gr::vmcircbuf(size)
{
#if !defined(HAVE_MMAP) || !defined(HAVE_SHM_OPEN)
std::stringstream error_msg;
@@ -178,7 +178,7 @@ gr::vmcircbuf_factory* vmcircbuf_mmap_shm_open_factory::singleton()
int vmcircbuf_mmap_shm_open_factory::granularity() { return gr::pagesize(); }
-gr::vmcircbuf* vmcircbuf_mmap_shm_open_factory::make(int size)
+gr::vmcircbuf* vmcircbuf_mmap_shm_open_factory::make(size_t size)
{
try {
return new vmcircbuf_mmap_shm_open(size);
diff --git a/gnuradio-runtime/lib/vmcircbuf_mmap_shm_open.h b/gnuradio-runtime/lib/vmcircbuf_mmap_shm_open.h
index ea5460d9f5..15dbf392d7 100644
--- a/gnuradio-runtime/lib/vmcircbuf_mmap_shm_open.h
+++ b/gnuradio-runtime/lib/vmcircbuf_mmap_shm_open.h
@@ -23,7 +23,7 @@ namespace gr {
class GR_RUNTIME_API vmcircbuf_mmap_shm_open : public gr::vmcircbuf
{
public:
- vmcircbuf_mmap_shm_open(int size);
+ vmcircbuf_mmap_shm_open(size_t size);
~vmcircbuf_mmap_shm_open() override;
};
@@ -50,7 +50,7 @@ public:
*
* Call this to create a doubly mapped circular buffer.
*/
- gr::vmcircbuf* make(int size) override;
+ gr::vmcircbuf* make(size_t size) override;
};
} /* namespace gr */
diff --git a/gnuradio-runtime/lib/vmcircbuf_mmap_tmpfile.cc b/gnuradio-runtime/lib/vmcircbuf_mmap_tmpfile.cc
index db4dce47c4..2838fd4f0e 100644
--- a/gnuradio-runtime/lib/vmcircbuf_mmap_tmpfile.cc
+++ b/gnuradio-runtime/lib/vmcircbuf_mmap_tmpfile.cc
@@ -32,7 +32,7 @@
namespace gr {
-vmcircbuf_mmap_tmpfile::vmcircbuf_mmap_tmpfile(int size) : gr::vmcircbuf(size)
+vmcircbuf_mmap_tmpfile::vmcircbuf_mmap_tmpfile(size_t size) : gr::vmcircbuf(size)
{
#if !defined(HAVE_MMAP)
GR_LOG_ERROR(d_logger, "mmap or mkstemp is not available");
@@ -170,7 +170,7 @@ gr::vmcircbuf_factory* vmcircbuf_mmap_tmpfile_factory::singleton()
int vmcircbuf_mmap_tmpfile_factory::granularity() { return gr::pagesize(); }
-gr::vmcircbuf* vmcircbuf_mmap_tmpfile_factory::make(int size)
+gr::vmcircbuf* vmcircbuf_mmap_tmpfile_factory::make(size_t size)
{
try {
return new vmcircbuf_mmap_tmpfile(size);
diff --git a/gnuradio-runtime/lib/vmcircbuf_mmap_tmpfile.h b/gnuradio-runtime/lib/vmcircbuf_mmap_tmpfile.h
index 326656fa7d..4d5d6b2fd2 100644
--- a/gnuradio-runtime/lib/vmcircbuf_mmap_tmpfile.h
+++ b/gnuradio-runtime/lib/vmcircbuf_mmap_tmpfile.h
@@ -23,7 +23,7 @@ namespace gr {
class GR_RUNTIME_API vmcircbuf_mmap_tmpfile : public gr::vmcircbuf
{
public:
- vmcircbuf_mmap_tmpfile(int size);
+ vmcircbuf_mmap_tmpfile(size_t size);
~vmcircbuf_mmap_tmpfile() override;
};
@@ -50,7 +50,7 @@ public:
*
* Call this to create a doubly mapped circular buffer.
*/
- gr::vmcircbuf* make(int size) override;
+ gr::vmcircbuf* make(size_t size) override;
};
} /* namespace gr */
diff --git a/gnuradio-runtime/lib/vmcircbuf_sysv_shm.cc b/gnuradio-runtime/lib/vmcircbuf_sysv_shm.cc
index 1c0ef59c15..ef9f568174 100644
--- a/gnuradio-runtime/lib/vmcircbuf_sysv_shm.cc
+++ b/gnuradio-runtime/lib/vmcircbuf_sysv_shm.cc
@@ -31,7 +31,7 @@
namespace gr {
-vmcircbuf_sysv_shm::vmcircbuf_sysv_shm(int size) : gr::vmcircbuf(size)
+vmcircbuf_sysv_shm::vmcircbuf_sysv_shm(size_t size) : gr::vmcircbuf(size)
{
#if !defined(HAVE_SYS_SHM_H)
GR_LOG_ERROR(d_logger, "sysv shared memory is not available");
@@ -178,7 +178,7 @@ gr::vmcircbuf_factory* vmcircbuf_sysv_shm_factory::singleton()
int vmcircbuf_sysv_shm_factory::granularity() { return gr::pagesize(); }
-gr::vmcircbuf* vmcircbuf_sysv_shm_factory::make(int size)
+gr::vmcircbuf* vmcircbuf_sysv_shm_factory::make(size_t size)
{
try {
return new vmcircbuf_sysv_shm(size);
diff --git a/gnuradio-runtime/lib/vmcircbuf_sysv_shm.h b/gnuradio-runtime/lib/vmcircbuf_sysv_shm.h
index 4f20a4618b..86ea503ccd 100644
--- a/gnuradio-runtime/lib/vmcircbuf_sysv_shm.h
+++ b/gnuradio-runtime/lib/vmcircbuf_sysv_shm.h
@@ -23,7 +23,7 @@ namespace gr {
class GR_RUNTIME_API vmcircbuf_sysv_shm : public gr::vmcircbuf
{
public:
- vmcircbuf_sysv_shm(int size);
+ vmcircbuf_sysv_shm(size_t size);
~vmcircbuf_sysv_shm() override;
};
@@ -50,7 +50,7 @@ public:
*
* Call this to create a doubly mapped circular buffer.
*/
- gr::vmcircbuf* make(int size) override;
+ gr::vmcircbuf* make(size_t size) override;
};
} /* namespace gr */