Fixed: [PATCH 2/3] uhttpd URL-codec enhancements.
[openwrt/staging/yousong.git] / package / uhttpd / src / uhttpd.c
index 9b9608628d4d393dc654bfbe966d5bdc17cb48a7..5d66e23a50b5e5590b848cde75f2a896f678d90f 100644 (file)
@@ -948,9 +948,10 @@ int main (int argc, char **argv)
                                        for (opt = 0; optarg[opt]; opt++)
                                                if (optarg[opt] == '+')
                                                        optarg[opt] = ' ';
-
-                                       memset(port, 0, strlen(optarg)+1);
-                                       uh_urldecode(port, strlen(optarg), optarg, strlen(optarg));
+                                       /* opt now contains strlen(optarg) -- no need to re-scan */
+                                       memset(port, 0, opt+1);
+                                       if (uh_urldecode(port, opt, optarg, opt) < 0)
+                                           fprintf( stderr, "uhttpd: invalid encoding\n" );
 
                                        printf("%s", port);
                                        free(port);