View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000302 | easycwmp | Bug | public | 2017-10-18 18:10 | 2018-06-25 18:42 |
Reporter | hmh | Assigned To | emna.trigui@pivasoftware.com | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
OS | OpenWRT | OS Version | Chaos_Calmer | ||
Summary | 0000302: Does not filter illegal characters in DEVICE_PRODUCT, interacts badly with some ACSes | ||||
Description | Easycwmp does not filter characters like "/" in DEVICE_PRODUCT (which are common in several router model names in OpenWRT/LEDE). With FreeACS, this results in major issues when attempting to provision new firmware to the units, because the file path will have an extra "/" in it (which is not a path separator), and therefore the firmware data file cannot be found, ever. | ||||
Steps To Reproduce | Provision a TP-Link TL-WDR842ND with OpenWRT, and attempt to update its firmware using FreeACS. This results in an attempt to download an illegal file name that has an "/" in it, because the contents of /etc/device_info are: DEVICE_MANUFACTURER='TP-LINK' DEVICE_PRODUCT='SIMETBOX-TP-LINKTL-WR842N/NDv2' DEVICE_REVISION='v0' And this results in an illegal URI due to the forward slash in "WR842N/NDv2". | ||||
Additional Information | Changing the init.d/easycwmp script with the attached patch fixes the issue, although I am not sure this is the best way to do it. If anything, it illustrates what the issue is better than my description of it... | ||||
Tags | No tags attached. | ||||
e-mail notification | |||||
|
easycwmp_init.d_badchars.patch (1,916 bytes)
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; } |
|
Delivered in EasyCwmp-1.7.0 |
Date Modified | Username | Field | Change |
---|---|---|---|
2017-10-18 18:10 | hmh | New Issue | |
2017-10-18 18:10 | hmh | File Added: easycwmp_init.d_badchars.patch | |
2018-06-25 18:42 | emna.trigui@pivasoftware.com | Note Added: 0000882 | |
2018-06-25 18:42 | emna.trigui@pivasoftware.com | Status | new => resolved |
2018-06-25 18:42 | emna.trigui@pivasoftware.com | Resolution | open => fixed |
2018-06-25 18:42 | emna.trigui@pivasoftware.com | Assigned To | => emna.trigui@pivasoftware.com |