summaryrefslogtreecommitdiff
path: root/drivers/qmimodem
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2018-12-11 20:58:27 +0100
committerDenis Kenzior <denkenz@gmail.com>2018-12-11 14:14:40 -0600
commit1749018577d43ff8b3bf0fe565a4814e1d84de88 (patch)
tree0478d6ebd176525817111cd290265211c4e5758b /drivers/qmimodem
parent2680a41bd326843be17c7a90028137b945e3946d (diff)
downloadofono-1749018577d43ff8b3bf0fe565a4814e1d84de88.tar.gz
qmi: Fix Secondary DNS overwriting Primary DNS
inet_ntoa was called twice in a row and as a result both primay and secondary DNS were pointing to same static buffer containing last value (secondary DNS). As a result, ofono always advertised the secondary DNS twice through DBus ConnectionContext.GetProperties 'DomainNameServers'. Related: https://osmocom.org/issues/3031
Diffstat (limited to 'drivers/qmimodem')
-rw-r--r--drivers/qmimodem/gprs-context.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/qmimodem/gprs-context.c b/drivers/qmimodem/gprs-context.c
index dcdf8ae1..f1fd1f12 100644
--- a/drivers/qmimodem/gprs-context.c
+++ b/drivers/qmimodem/gprs-context.c
@@ -88,6 +88,7 @@ static void get_settings_cb(struct qmi_result *result, void *user_data)
char* straddr;
char* apn;
const char *dns[3] = { NULL, NULL, NULL };
+ char dns_buf[2][INET_ADDRSTRLEN];
DBG("");
@@ -131,14 +132,14 @@ static void get_settings_cb(struct qmi_result *result, void *user_data)
if (qmi_result_get_uint32(result,
QMI_WDS_RESULT_PRIMARY_DNS, &ip_addr)) {
addr.s_addr = htonl(ip_addr);
- dns[0] = inet_ntoa(addr);
+ dns[0] = inet_ntop(AF_INET, &addr, dns_buf[0], sizeof(dns_buf[0]));
DBG("Primary DNS: %s", dns[0]);
}
if (qmi_result_get_uint32(result,
QMI_WDS_RESULT_SECONDARY_DNS, &ip_addr)) {
addr.s_addr = htonl(ip_addr);
- dns[1] = inet_ntoa(addr);
+ dns[1] = inet_ntop(AF_INET, &addr, dns_buf[1], sizeof(dns_buf[1]));
DBG("Secondary DNS: %s", dns[1]);
}