case sensor_type_accel:
qemu_mutex_lock(&accel_mutex);
strncpy(accel_xyz, data, sizeof(accel_xyz));
+ accel_xyz[sizeof(accel_xyz)-1] = 0;
qemu_mutex_unlock(&accel_mutex);
break;
case sensor_type_accel_enable:
case sensor_type_rotation_vector:
qemu_mutex_lock(&rot_mutex);
strncpy(rot_quad, data, sizeof(rot_quad));
+ rot_quad[sizeof(rot_quad)-1] = 0;
qemu_mutex_unlock(&rot_mutex);
break;
case sensor_type_rotation_vector_enable:
case sensor_type_mag:
qemu_mutex_lock(&geo_mutex);
strncpy(geo_tesla, data, sizeof(geo_tesla));
+ geo_tesla[sizeof(geo_tesla)-1] = 0;
qemu_mutex_unlock(&geo_mutex);
break;
case sensor_type_tilt:
qemu_mutex_lock(&geo_mutex);
strncpy(geo_raw, data, sizeof(geo_raw));
+ geo_raw[sizeof(geo_raw)-1] = 0;
qemu_mutex_unlock(&geo_mutex);
break;
case sensor_type_geo_enable:
case sensor_type_pressure:
qemu_mutex_lock(&pressure_mutex);
strncpy(pressure_data, data, sizeof(pressure_data));
+ pressure_data[sizeof(pressure_data)-1] = 0;
qemu_mutex_unlock(&pressure_mutex);
break;
case sensor_type_pressure_enable:
}
}
-static void __get_sensor_data(enum sensor_types type, char *msg_info)
+static void __get_sensor_data(enum sensor_types type, char *msg_info, size_t size)
{
if (msg_info == NULL) {
LOG_WARNING("msg_info is null\n");
break;
case sensor_type_accel:
qemu_mutex_lock(&accel_mutex);
- strcpy(msg_info, accel_xyz);
+ strncpy(msg_info, accel_xyz, size);
qemu_mutex_unlock(&accel_mutex);
break;
case sensor_type_accel_enable:
qemu_mutex_lock(&accel_mutex);
- sprintf(msg_info, "%d", accel_enable);
+ snprintf(msg_info, size, "%d", accel_enable);
qemu_mutex_unlock(&accel_mutex);
break;
case sensor_type_accel_delay:
qemu_mutex_lock(&accel_mutex);
- sprintf(msg_info, "%d", accel_delay);
+ snprintf(msg_info, size, "%d", accel_delay);
qemu_mutex_unlock(&accel_mutex);
break;
case sensor_type_mag:
qemu_mutex_lock(&geo_mutex);
- strcpy(msg_info, geo_tesla);
+ strncpy(msg_info, geo_tesla, size);
qemu_mutex_unlock(&geo_mutex);
break;
case sensor_type_tilt:
qemu_mutex_lock(&geo_mutex);
- strcpy(msg_info, geo_raw);
+ strncpy(msg_info, geo_raw, size);
qemu_mutex_unlock(&geo_mutex);
break;
case sensor_type_geo_enable:
qemu_mutex_lock(&geo_mutex);
- sprintf(msg_info, "%d", geo_enable);
+ snprintf(msg_info, size, "%d", geo_enable);
qemu_mutex_unlock(&geo_mutex);
break;
case sensor_type_geo_delay:
qemu_mutex_lock(&geo_mutex);
- sprintf(msg_info, "%d", geo_delay);
+ snprintf(msg_info, size, "%d", geo_delay);
qemu_mutex_unlock(&geo_mutex);
break;
case sensor_type_gyro:
qemu_mutex_lock(&gyro_mutex);
- sprintf(msg_info, "%d,%d,%d", gyro_x_raw, gyro_y_raw, gyro_z_raw);
+ snprintf(msg_info, size, "%d,%d,%d", gyro_x_raw, gyro_y_raw, gyro_z_raw);
qemu_mutex_unlock(&gyro_mutex);
break;
case sensor_type_gyro_enable:
qemu_mutex_lock(&gyro_mutex);
- sprintf(msg_info, "%d", gyro_enable);
+ snprintf(msg_info, size, "%d", gyro_enable);
qemu_mutex_unlock(&gyro_mutex);
break;
case sensor_type_gyro_delay:
qemu_mutex_lock(&gyro_mutex);
- sprintf(msg_info, "%d", gyro_delay);
+ snprintf(msg_info, size, "%d", gyro_delay);
qemu_mutex_unlock(&gyro_mutex);
break;
case sensor_type_gyro_x:
qemu_mutex_lock(&gyro_mutex);
- sprintf(msg_info, "%d", gyro_x_raw);
+ snprintf(msg_info, size, "%d", gyro_x_raw);
qemu_mutex_unlock(&gyro_mutex);
break;
case sensor_type_gyro_y:
qemu_mutex_lock(&gyro_mutex);
- sprintf(msg_info, "%d", gyro_y_raw);
+ snprintf(msg_info, size, "%d", gyro_y_raw);
qemu_mutex_unlock(&gyro_mutex);
break;
case sensor_type_gyro_z:
qemu_mutex_lock(&gyro_mutex);
- sprintf(msg_info, "%d", gyro_z_raw);
+ snprintf(msg_info, size, "%d", gyro_z_raw);
qemu_mutex_unlock(&gyro_mutex);
break;
case sensor_type_light:
case sensor_type_light_adc:
qemu_mutex_lock(&light_mutex);
- sprintf(msg_info, "%d", light_adc);
+ snprintf(msg_info, size, "%d", light_adc);
qemu_mutex_unlock(&light_mutex);
break;
case sensor_type_light_level:
qemu_mutex_lock(&light_mutex);
- sprintf(msg_info, "%d", light_level);
+ snprintf(msg_info, size, "%d", light_level);
qemu_mutex_unlock(&light_mutex);
break;
case sensor_type_light_enable:
qemu_mutex_lock(&light_mutex);
- sprintf(msg_info, "%d", light_enable);
+ snprintf(msg_info, size, "%d", light_enable);
qemu_mutex_unlock(&light_mutex);
break;
case sensor_type_light_delay:
qemu_mutex_lock(&light_mutex);
- sprintf(msg_info, "%d", light_delay);
+ snprintf(msg_info, size, "%d", light_delay);
qemu_mutex_unlock(&light_mutex);
break;
case sensor_type_proxi:
qemu_mutex_lock(&proxi_mutex);
- sprintf(msg_info, "%d", proxi_vo);
+ snprintf(msg_info, size, "%d", proxi_vo);
qemu_mutex_unlock(&proxi_mutex);
break;
case sensor_type_proxi_enable:
qemu_mutex_lock(&proxi_mutex);
- sprintf(msg_info, "%d", proxi_enable);
+ snprintf(msg_info, size, "%d", proxi_enable);
qemu_mutex_unlock(&proxi_mutex);
break;
case sensor_type_proxi_delay:
qemu_mutex_lock(&proxi_mutex);
- sprintf(msg_info, "%d", proxi_delay);
+ snprintf(msg_info, size, "%d", proxi_delay);
qemu_mutex_unlock(&proxi_mutex);
break;
case sensor_type_rotation_vector:
qemu_mutex_lock(&rot_mutex);
- strcpy(msg_info, rot_quad);
+ strncpy(msg_info, rot_quad, size);
qemu_mutex_unlock(&rot_mutex);
break;
case sensor_type_rotation_vector_enable:
qemu_mutex_lock(&rot_mutex);
- sprintf(msg_info, "%d", rot_enable);
+ snprintf(msg_info, size, "%d", rot_enable);
qemu_mutex_unlock(&rot_mutex);
break;
case sensor_type_rotation_vector_delay:
qemu_mutex_lock(&rot_mutex);
- sprintf(msg_info, "%d", rot_delay);
+ snprintf(msg_info, size, "%d", rot_delay);
qemu_mutex_unlock(&rot_mutex);
break;
case sensor_type_pressure:
qemu_mutex_lock(&pressure_mutex);
- strcpy(msg_info, pressure_data);
+ strncpy(msg_info, pressure_data, size);
qemu_mutex_unlock(&pressure_mutex);
break;
case sensor_type_pressure_enable:
qemu_mutex_lock(&pressure_mutex);
- sprintf(msg_info, "%d", pressure_enable);
+ snprintf(msg_info, size, "%d", pressure_enable);
qemu_mutex_unlock(&pressure_mutex);
break;
case sensor_type_pressure_delay:
qemu_mutex_lock(&pressure_mutex);
- sprintf(msg_info, "%d", pressure_delay);
+ snprintf(msg_info, size, "%d", pressure_delay);
qemu_mutex_unlock(&pressure_mutex);
break;
case sensor_type_uv:
qemu_mutex_lock(&uv_mutex);
- sprintf(msg_info, "%d", uv_level);
+ snprintf(msg_info, size, "%d", uv_level);
qemu_mutex_unlock(&uv_mutex);
break;
case sensor_type_uv_enable:
qemu_mutex_lock(&uv_mutex);
- sprintf(msg_info, "%d", uv_enable);
+ snprintf(msg_info, size, "%d", uv_enable);
qemu_mutex_unlock(&uv_mutex);
break;
case sensor_type_uv_delay:
qemu_mutex_lock(&uv_mutex);
- sprintf(msg_info, "%d", uv_delay);
+ snprintf(msg_info, size, "%d", uv_delay);
qemu_mutex_unlock(&uv_mutex);
break;
case sensor_type_hrm:
qemu_mutex_lock(&hrm_mutex);
- sprintf(msg_info, "%d, %d", hrm_heart, hrm_rri);
+ snprintf(msg_info, size, "%d, %d", hrm_heart, hrm_rri);
qemu_mutex_unlock(&hrm_mutex);
break;
case sensor_type_hrm_enable:
qemu_mutex_lock(&hrm_mutex);
- sprintf(msg_info, "%d", hrm_enable);
+ snprintf(msg_info, size, "%d", hrm_enable);
qemu_mutex_unlock(&hrm_mutex);
break;
case sensor_type_hrm_delay:
qemu_mutex_lock(&hrm_mutex);
- sprintf(msg_info, "%d", hrm_delay);
+ snprintf(msg_info, size, "%d", hrm_delay);
qemu_mutex_unlock(&hrm_mutex);
break;
case sensor_type_pedo:
qemu_mutex_lock(&pedo_mutex);
- sprintf(msg_info, "%d", pedo_value);
+ snprintf(msg_info, size, "%d", pedo_value);
qemu_mutex_unlock(&pedo_mutex);
break;
case sensor_type_pedo_enable:
qemu_mutex_lock(&pedo_mutex);
- sprintf(msg_info, "%d", pedo_enable);
+ snprintf(msg_info, size, "%d", pedo_enable);
qemu_mutex_unlock(&pedo_mutex);
break;
case sensor_type_pedo_delay:
qemu_mutex_lock(&pedo_mutex);
- sprintf(msg_info, "%d", pedo_delay);
+ snprintf(msg_info, size, "%d", pedo_delay);
qemu_mutex_unlock(&pedo_mutex);
break;
default:
if (req == request_set) {
__set_sensor_data(type, data, len);
} else if (req == request_get) {
- __get_sensor_data(type, msg_info);
+ __get_sensor_data(type, msg_info, sizeof(msg_info));
send_sensor_to_ecs(msg_info, type);
}
}
msginfo->req = request_answer;
msginfo->type = type;
- __get_sensor_data(type, msginfo->buf);
+ __get_sensor_data(type, msginfo->buf, (size_t)_MAX_BUF);
LOG_TRACE("sending message: %s, type: %d, req: %d\n", msginfo->buf, msginfo->type, msginfo->req);