summaryrefslogtreecommitdiff
path: root/unit
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2017-11-07 12:36:11 -0600
committerDenis Kenzior <denkenz@gmail.com>2017-11-08 21:02:22 -0600
commit1bf22999e594faf75c96d1b9a53c1b1f8b87a345 (patch)
treed8d89fffcb8080603374b6ccc1dd88794b64ec05 /unit
parentbae2843eac0fecb4ec3427db197d31d3c48ee301 (diff)
downloadofono-1bf22999e594faf75c96d1b9a53c1b1f8b87a345.tar.gz
unit: Fix fragmenting messages < frag_size
Diffstat (limited to 'unit')
-rw-r--r--unit/test-mbim.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/unit/test-mbim.c b/unit/test-mbim.c
index 801b1e8e..4c1a021f 100644
--- a/unit/test-mbim.c
+++ b/unit/test-mbim.c
@@ -134,7 +134,7 @@ static void do_debug(const char *str, void *user_data)
static struct mbim_message *build_message(const struct message_data *msg_data)
{
- static const int frag_size = 64;
+ static const unsigned int frag_size = 64;
struct mbim_message *msg;
struct iovec *iov;
size_t n_iov;
@@ -143,9 +143,14 @@ static struct mbim_message *build_message(const struct message_data *msg_data)
n_iov = align_len(msg_data->binary_len, frag_size) / frag_size;
iov = l_new(struct iovec, n_iov);
- iov[0].iov_len = frag_size - 20;
+ iov[0].iov_len = msg_data->binary_len < frag_size ?
+ msg_data->binary_len - 20 :
+ frag_size - 20;
iov[0].iov_base = l_memdup(msg_data->binary + 20, iov[0].iov_len);
+ if (n_iov == 1)
+ goto done;
+
for (i = 1; i < n_iov - 1; i++) {
iov[i].iov_base = l_memdup(msg_data->binary + i * frag_size,
frag_size);
@@ -156,6 +161,7 @@ static struct mbim_message *build_message(const struct message_data *msg_data)
iov[i].iov_base = l_memdup(msg_data->binary + i * frag_size,
iov[i].iov_len);
+done:
msg = _mbim_message_build(msg_data->binary, iov, n_iov);
assert(msg);