| From 7f148561a4d36f9d3f2574285a488717d83e7e0c Mon Sep 17 00:00:00 2001 |
| From: Denton Gentry <dgentry@google.com> |
| Date: Wed, 18 Nov 2015 05:58:46 -0800 |
| Subject: [PATCH] output something rational for tx bitrate. |
| |
| 1. Ensure the buffer will always be initialized. |
| parse_bitrates is passed a pointer to a buffer on the stack. If the |
| rate is zero and no other attributes are set, nothing is printed to |
| the buffer and iw ends up outputting whatever garbage was on the |
| stack. |
| |
| 2. Print *something* |
| If there ss a NL80211_STA_INFO_[TR]X_BITRATE present, then print |
| something for thetx/rx bitrate even if the rate is zero. It is useful |
| to know the difference between no-rate-present and rate-is-zero. |
| |
| Fixes b/25737028 |
| --- |
| station.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| diff --git a/station.c b/station.c |
| index 2b2eef8..51532fa 100644 |
| --- a/station.c |
| +++ b/station.c |
| @@ -56,6 +56,7 @@ void parse_bitrate(struct nlattr *bitrate_attr, char *buf, int buflen) |
| [NL80211_RATE_INFO_SHORT_GI] = { .type = NLA_FLAG }, |
| }; |
| |
| + buf[0] = '\0'; |
| if (nla_parse_nested(rinfo, NL80211_RATE_INFO_MAX, |
| bitrate_attr, rate_policy)) { |
| snprintf(buf, buflen, "failed to parse nested rate attributes!"); |
| @@ -66,9 +67,8 @@ void parse_bitrate(struct nlattr *bitrate_attr, char *buf, int buflen) |
| rate = nla_get_u32(rinfo[NL80211_RATE_INFO_BITRATE32]); |
| else if (rinfo[NL80211_RATE_INFO_BITRATE]) |
| rate = nla_get_u16(rinfo[NL80211_RATE_INFO_BITRATE]); |
| - if (rate > 0) |
| - pos += snprintf(pos, buflen - (pos - buf), |
| - "%d.%d MBit/s", rate / 10, rate % 10); |
| + pos += snprintf(pos, buflen - (pos - buf), |
| + "%d.%d MBit/s", rate / 10, rate % 10); |
| |
| if (rinfo[NL80211_RATE_INFO_MCS]) |
| pos += snprintf(pos, buflen - (pos - buf), |
| -- |
| 2.6.0.rc2.230.g3dd15c0 |
| |