On Thu, Sep 24, 2009 at 2:13 PM, Joerg Albert <jal2@xxxxxx> wrote: > On 09/24/2009 08:02 PM, Kalle Valo wrote: > >> + len = sizeof(wiphy->fw_version); >> + snprintf(wiphy->fw_version, len, "%d.%d.%d-%d", >> + priv->fw_version.major, priv->fw_version.minor, >> + priv->fw_version.patch, priv->fw_version.build); >> + >> + len = sizeof(wiphy->hw_version); >> + snprintf(wiphy->hw_version, len, "%d", priv->board_type); >> + >> + /* null terminate the strings in case they were truncated */ >> + wiphy->fw_version[len - 1] = '\0'; >> + wiphy->hw_version[len - 1] = '\0'; > > This only works as long as sizeof(wiphy->fw_version) == sizeof(wiphy->hw_version) - which is currently the case. > For sizeof(wiphy->fw_version) < sizeof(wiphy_hw_version) it overwrites memory behind wiphy->fw_version. Good point, thanks for catching that. > IMHO this is more robust against changes in the lengths of the char arrays: > > + wiphy->fw_version[sizeof(wiphy->fw_version) - 1] = '\0'; > + wiphy->hw_version[sizeof(wiphy->hw_version) - 1] = '\0'; Actually Christian pointed out that snprintf() always null terminates the string and all this unnecessary. So I'll just remove this in v2. Kalle -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html