strtol clamps returned value between INT_MIN and INT_MAX, causing
invalid value (255.255.255.127) being reported for any address
if last octet > 127 when sizeof(long) == 4.
---
 drivers/huaweimodem/gprs-context.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/huaweimodem/gprs-context.c 
b/drivers/huaweimodem/gprs-context.c
index 3acd90c..dda5e32 100644
--- a/drivers/huaweimodem/gprs-context.c
+++ b/drivers/huaweimodem/gprs-context.c
@@ -80,7 +80,7 @@ static gboolean get_next_addr(GAtResultIter *iter, char 
**addr)
        if (g_at_result_iter_next_unquoted_string(iter, &str) == FALSE)
                return FALSE;
 
-       val = strtol(str, NULL, 16);
+       val = strtoul(str, NULL, 16);
 
        if (addr)
                *addr = g_strdup_printf("%u.%u.%u.%u",
-- 
2.5.0

_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to