Stumbled on a bug in ddns-scripts where if you select web based ip 
detection the update variable replacement will fail because of the forward 
slashes in the ip_url.  I also noticed that no url escaping was taking 
place and that could lead to other undefined or incorrect behavior.  This 
patch adds url escaping to all replacement variables.

Signed-off-by: Eric Warnke <[email protected]>
---
 .../files/usr/lib/ddns/dynamic_dns_updater.sh      |    3 +-
 net/ddns-scripts/files/usr/lib/ddns/url_escape.sed |   23 ++++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletions(-)
 create mode 100644 net/ddns-scripts/files/usr/lib/ddns/url_escape.sed

diff --git a/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_updater.sh 
b/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_updater.sh
index 62d4886..8f21a33 100755
--- a/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_updater.sh
+++ b/net/ddns-scripts/files/usr/lib/ddns/dynamic_dns_updater.sh
@@ -250,7 +250,8 @@ do
                do
                        replace_name=$(echo "\[$option_var\]" | tr 'a-z' 'A-Z')
                        replace_value=$(eval echo "\$$option_var")
-                       final_url=$(echo $final_url | sed 
s/"$replace_name"/"$replace_value"/g )
+                       replace_value=`echo $replace_value | sed -f 
/usr/lib/ddns/url_escape.sed`
+                       final_url=$(echo $final_url | sed 
s^"$replace_name"^"$replace_value"^g )
                done    
                final_url=$(echo $final_url | sed s/"\[IP\]"/"$current_ip"/g )
                
diff --git a/net/ddns-scripts/files/usr/lib/ddns/url_escape.sed 
b/net/ddns-scripts/files/usr/lib/ddns/url_escape.sed
new file mode 100644
index 0000000..eb7011b
--- /dev/null
+++ b/net/ddns-scripts/files/usr/lib/ddns/url_escape.sed
@@ -0,0 +1,23 @@
+# sed url escaping
+s: :%20:g
+s:<:%3C:g
+s:>:%3E:g
+s:#:%23:g
+s:%:%25:g
+s:{:%7B:g
+s:}:%7D:g
+s:|:%7C:g
+s:\\:%5C:g
+s:\^:%5E:g
+s:~:%7E:g
+s:\[:%5B:g
+s:\]:%5D:g
+s:`:%60:g
+s:;:%3B:g
+s:/:%2F:g
+s:?:%3F:g
+s^:^%3A^g
+s:@:%40:g
+s:=:%3D:g
+s:&:%26:g
+s:\$:%24:g
-- 
1.5.5.6

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to