diff --git a/android/ipc-tester.c b/android/ipc-tester.c
index ca4d9b9..b161049 100644
--- a/android/ipc-tester.c
+++ b/android/ipc-tester.c
.buf = set_rep_data,
};
+struct hidhost_send_data_data {
+ struct hal_hdr hdr;
+ struct hal_cmd_hidhost_send_data hiddata;
+
+ /* data placeholder for hal_cmd_hidhost_send_data.data[0] field */
+ uint8_t buf[BLUEZ_HAL_MTU - sizeof(struct hal_hdr) -
+ sizeof(struct hal_cmd_hidhost_send_data)];
+} __attribute__((packed));
+
+#define send_data_data "1234567890"
+
+static struct hidhost_send_data_data hidhost_send_data_overs = {
+ .hdr.service_id = HAL_SERVICE_ID_HIDHOST,
+ .hdr.opcode = HAL_OP_HIDHOST_SEND_DATA,
+ .hdr.len = sizeof(struct hal_cmd_hidhost_send_data) +
+ sizeof(send_data_data),
+
+ /* declare wrong descriptor length */
+ .hiddata.len = sizeof(send_data_data) + 1,
+ /* init .hiddata.data[0] */
+ .buf = send_data_data,
+};
+
+static struct hidhost_send_data_data hidhost_send_data_unders = {
+ .hdr.service_id = HAL_SERVICE_ID_HIDHOST,
+ .hdr.opcode = HAL_OP_HIDHOST_SEND_DATA,
+ .hdr.len = sizeof(struct hal_cmd_hidhost_send_data) +
+ sizeof(send_data_data),
+
+ /* declare wrong descriptor length */
+ .hiddata.len = sizeof(send_data_data) - 1,
+ /* init .hiddata.data[0] */
+ .buf = send_data_data,
+};
+
int main(int argc, char *argv[])
{
snprintf(exec_dir, sizeof(exec_dir), "%s", dirname(argv[0]));
HAL_OP_HIDHOST_SEND_DATA,
sizeof(struct hal_cmd_hidhost_send_data), -1,
HAL_SERVICE_ID_BLUETOOTH, HAL_SERVICE_ID_HIDHOST);
+ test_generic("Data size HIDHOST Send Vardata+",
+ ipc_send_tc, setup, teardown,
+ &hidhost_send_data_overs,
+ (sizeof(struct hal_hdr) +
+ sizeof(struct hal_cmd_hidhost_send_data) +
+ sizeof(send_data_data)),
+ HAL_SERVICE_ID_BLUETOOTH, HAL_SERVICE_ID_HIDHOST);
+ test_generic("Data size HIDHOST Send Vardata-",
+ ipc_send_tc, setup, teardown,
+ &hidhost_send_data_unders,
+ (sizeof(struct hal_hdr) +
+ sizeof(struct hal_cmd_hidhost_send_data) +
+ sizeof(send_data_data)),
+ HAL_SERVICE_ID_BLUETOOTH, HAL_SERVICE_ID_HIDHOST);
return tester_run();
}