wireless: fix changing reconf/serialize options in configuration
[project/netifd.git] / interface-ip.c
index 585cb6f1d6736b4c4df8b84f344e15e000e6120d..a06a514b6ddea9771d5a82f088b7ad7ee94529fc 100644 (file)
@@ -99,7 +99,7 @@ static struct uloop_timeout valid_until_timeout;
 static void
 clear_if_addr(union if_addr *a, int mask)
 {
-       int m_bytes = (mask + 7) / 8;
+       size_t m_bytes = (mask + 7) / 8;
        uint8_t m_clear = (1 << (m_bytes * 8 - mask)) - 1;
        uint8_t *p = (uint8_t *) a;
 
@@ -1429,7 +1429,7 @@ void
 interface_add_dns_server_list(struct interface_ip_settings *ip, struct blob_attr *list)
 {
        struct blob_attr *cur;
-       int rem;
+       size_t rem;
 
        blobmsg_for_each_attr(cur, list, rem) {
                if (blobmsg_type(cur) != BLOBMSG_TYPE_STRING)
@@ -1461,7 +1461,7 @@ void
 interface_add_dns_search_list(struct interface_ip_settings *ip, struct blob_attr *list)
 {
        struct blob_attr *cur;
-       int rem;
+       size_t rem;
 
        blobmsg_for_each_attr(cur, list, rem) {
                if (blobmsg_type(cur) != BLOBMSG_TYPE_STRING)
@@ -1566,7 +1566,9 @@ __interface_write_dns_entries(FILE *f, const char *jail)
 void
 interface_write_resolv_conf(const char *jail)
 {
-       size_t plen = (jail ? strlen(jail) + 1 : 0 ) + strlen(resolv_conf) + 1;
+       size_t plen = (jail ? strlen(jail) + 1 : 0 ) +
+           (strlen(resolv_conf) >= strlen(DEFAULT_RESOLV_CONF) ?
+           strlen(resolv_conf) : strlen(DEFAULT_RESOLV_CONF) ) + 1;
        char *path = alloca(plen);
        char *dpath = alloca(plen);
        char *tmppath = alloca(plen + 4);