commit 7cb7f2f9c7bab3a7005fcd35eeeb262ef446c971
Author: Henrique de Moraes Holschuh <henrique@nic.br>
Date:   Tue Oct 17 16:40:55 2017 -0200

    easycwmp: replace characters that will cause trouble with URIs
    
    Not everything will URL-encode correctly, and this can play very
    badly with some ACS servers, e.g., on firmware filenames.  So,
    replace with "_" any characters that are too weird to allow through
    on IDs, names, labels and URIs.

diff --git a/easycwmp-1.6.0/ext/openwrt/init.d/easycwmpd b/easycwmp-1.6.0/ext/openwrt/init.d/easycwmpd
index 2bef646..df56c2c 100644
--- a/easycwmp-1.6.0/ext/openwrt/init.d/easycwmpd
+++ b/easycwmp-1.6.0/ext/openwrt/init.d/easycwmpd
@@ -13,15 +13,15 @@ init_device_info() {
 	local val oval
 	local change=0
 
-	val=`cat "/etc/device_info" | grep "DEVICE_MANUFACTURER" | cut -f 2 -d '=' | sed "s/['\"]//g"`
+	val=`cat "/etc/device_info" | grep "DEVICE_MANUFACTURER" | cut -f 2 -d '=' | sed -e "s/['\"]//g" -e "s'[]:/?#[@!$&()*+,;=]'_'g"`
 	oval=`$UCI_GET easycwmp.@device[0].manufacturer`
 	[ -n "$val" -a "$val" != "$oval" ] && { $UCI_SET easycwmp.@device[0].manufacturer="$val"; change=1; }
 
-	val=`cat "/etc/device_info" | grep "DEVICE_PRODUCT" | cut -f 2 -d '=' | sed "s/['\"]//g"`
+	val=`cat "/etc/device_info" | grep "DEVICE_PRODUCT" | cut -f 2 -d '=' | sed -e "s/['\"]//g" -e "s'[]:/?#[@!$&()*+,;=]'_'g"`
 	oval=`$UCI_GET easycwmp.@device[0].product_class`
 	[ -n "$val" -a "$val" != "$oval" ] && { $UCI_SET easycwmp.@device[0].product_class="$val"; change=1; }
 
-	val=`cat "/etc/device_info" | grep "DEVICE_REVISION" | cut -f 2 -d '=' | sed "s/['\"]//g"`
+	val=`cat "/etc/device_info" | grep "DEVICE_REVISION" | cut -f 2 -d '=' | sed -e "s/['\"]//g" -e "s'[]:/?#[@!$&()*+,;=]'_'g"`
 	oval=`$UCI_GET easycwmp.@device[0].hardware_version`
 	[ -n "$val" -a "$val" != "$oval" ] && { $UCI_SET easycwmp.@device[0].hardware_version="$val"; change=1; }
 
