Fix buffer overflows in system information

This commit is contained in:
cold-brewed 2019-02-20 23:01:04 -05:00
parent 9508936ac1
commit fa8d486887

View File

@ -669,42 +669,42 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info)
switch (state) switch (state)
{ {
case FRONTEND_POWERSTATE_NONE: case FRONTEND_POWERSTATE_NONE:
strlcat(tmp2, " ", sizeof(tmp)); strlcat(tmp2, " ", sizeof(tmp2));
strlcat(tmp2, strlcat(tmp2,
msg_hash_to_str( msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), sizeof(tmp)); MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE), sizeof(tmp2));
break; break;
case FRONTEND_POWERSTATE_NO_SOURCE: case FRONTEND_POWERSTATE_NO_SOURCE:
strlcat(tmp2, " (", sizeof(tmp)); strlcat(tmp2, " (", sizeof(tmp2));
strlcat(tmp2, strlcat(tmp2,
msg_hash_to_str( msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE), MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_NO_SOURCE),
sizeof(tmp)); sizeof(tmp2));
strlcat(tmp2, ")", sizeof(tmp)); strlcat(tmp2, ")", sizeof(tmp2));
break; break;
case FRONTEND_POWERSTATE_CHARGING: case FRONTEND_POWERSTATE_CHARGING:
strlcat(tmp2, " (", sizeof(tmp)); strlcat(tmp2, " (", sizeof(tmp2));
strlcat(tmp2, strlcat(tmp2,
msg_hash_to_str( msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING), MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGING),
sizeof(tmp)); sizeof(tmp2));
strlcat(tmp2, ")", sizeof(tmp)); strlcat(tmp2, ")", sizeof(tmp2));
break; break;
case FRONTEND_POWERSTATE_CHARGED: case FRONTEND_POWERSTATE_CHARGED:
strlcat(tmp2, " (", sizeof(tmp)); strlcat(tmp2, " (", sizeof(tmp2));
strlcat(tmp2, strlcat(tmp2,
msg_hash_to_str( msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED), MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_CHARGED),
sizeof(tmp)); sizeof(tmp2));
strlcat(tmp2, ")", sizeof(tmp)); strlcat(tmp2, ")", sizeof(tmp2));
break; break;
case FRONTEND_POWERSTATE_ON_POWER_SOURCE: case FRONTEND_POWERSTATE_ON_POWER_SOURCE:
strlcat(tmp2, " (", sizeof(tmp)); strlcat(tmp2, " (", sizeof(tmp2));
strlcat(tmp2, strlcat(tmp2,
msg_hash_to_str( msg_hash_to_str(
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING), MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_POWER_SOURCE_DISCHARGING),
sizeof(tmp)); sizeof(tmp2));
strlcat(tmp2, ")", sizeof(tmp)); strlcat(tmp2, ")", sizeof(tmp2));
break; break;
} }